Tabelle in Variable abspeichern...

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Tabelle in Variable abspeichern...

    Hi,

    bin mir nicht sicher, ob man mein Vorhaben wirklich so lösen kann/sollte aber vielleicht äussert sich ja jemand dazu. Also folgendes...

    Ich habe eine Übersicht mit unterschiedlichen Beiträgen. Wenn ich auf einen Beitrag klicke möchte ich nun gerne in die Komplettansicht wechseln.
    Ich sehe dann halt nur den einen Beitrag in voller Ansicht.

    Das Ganze versuche ich nun so umsetzten.

    default.php
    PHP-Code:
    if ($aktion == "3"){
    include(
    "tpl/site.tpl");
    include(
    "tpl/top.tpl");
    include (
    "tpl/navi.tpl");

    ansicht_artikel();  
    include (
    "tpl/content.tpl");

    In der Funktion steht folgendes:

    PHP-Code:
    function ansicht_artikel()
    {
    $sql="SELECT tblBeitrag.BeitragsID, tblBeitrag.BeitragsTitel......


    $result=mysql_query($sql)or die(mysql_error().$errordatabase);

         if(
    $result)

                     {

        echo '<table border="
    0" width="100%">';


        while (
    $beitraege = mysql_fetch_array($result))
        {


         echo ' <tr>';
         echo '   <td>&nbsp;</td>';
         echo '  <td>';
                    echo 
    $beitraege['BeitragsTitel'];
                    echo '</td>';
          echo '</tr>';
                      
        }
        echo'</table>';
          }

    (Das Ganze wurde nun natürlich extrem verkürzt)

    Nun möchte ich gerne die komplette Tabelle in eine Variable abspeichern und diese aus der Funktion zurückgeben, da ich diese gerne in die Seite content.tpl einfügen möchte. Sprich das Ergebnis der SQL Abfrage steht in einer Variablen und in der Datei content.tpl schreibe ich einfach nur echo $content;

    Ich könnte mir das ja einfach selber zusammenbauen, wird aber ziemlich lang und bevor ich das so umsetzte wollte ich einfach mal fragen, ob es eine einfachere Möglichkeit dafür gibt.

    Hoffe das war einigermassen verständlich. Vielen Dank im voraus.

  • #2
    *verschieb* BS

    BTW: Wo wird $action definiert?

    Kommentar


    • #3
      Hi,

      $aktion wird durch die "Links" der Navigation definiert. Also drückt man auf einen Beitrag, wird $aktion auf 3 gesetzt und dementsprechend erfolgt die Verarbeitung.

      Kommentar


      • #4
        PHP-Code:

        //so ungefähr?

          
        tab1 '<table border="0" width="100%">';
            while (
        $beitraege mysql_fetch_array($result))
            {


            $ 
        tab2' <tr>
               <td>&nbsp;</td>
               <td>
                '
        .$beitraege['BeitragsTitel'].'
                </td>
                </tr>'
        ;
                          
            }
            
        $tab3 '</table>';
             
        $tabelle $tab1 $tab2 $tab3
        mfg
        marc75

        <Platz für anderes>

        Kommentar


        • #5
          Der Tip sieht gut aus, leider funktioniert es momentan aber noch nicht. Habe irgendwie noch ein Problem, das meine Funktion nix zurückgibt.

          Im Prinzip dachte ich mir das nun so:


          PHP-Code:

          function ansicht_artikel()
          {

          //Hier die SQL Abfrage....

          // dann der Rest

            
          tab1 '<table border="0" width="100%">';
              while (
          $beitraege mysql_fetch_array($result))
              {


              $ 
          tab2' <tr>
                 <td>&nbsp;</td>
                 <td>
                  '
          .$beitraege['BeitragsTitel'].'
                  </td>
                  </tr>'
          ;
                            
              }
              
          $tab3 '</table>';
               
          $tabelle $tab1 $tab2 $tab3;

          return (
          $tabelle)

          Nun ruft die Default.php die Funktion auf, bekommt die Variable $tabelle mit der gesamten Tabelle drinn, bindet danach die Datei content.tpl ein und in der steht echo $tabelle. Leider wird noch nichts angezeigt. Irgendeine Idee was ich da genau falsch mache?

          Danke schonmal für den ersten Ansatz. Sieht ansonsten wirklich gut aus.

          Kommentar


          • #6
            $ tab1 stewht das so bei dir im code? oder eher so: $tab1
            mfg
            marc75

            <Platz für anderes>

            Kommentar


            • #7
              ne ne, natürlich steht da $tab1. Aber irgendwie ist da wohl ein allgemeines Problem. Habe in die Funktion einfach mal $tabelle="Hallo" und dann return $tabelle reingeschrieben. In der default steht echo $tabelle. Nun müsste da doch Hallo stehen oder nicht? Es passiert leider nichts, sprich da stimmt was nicht oder habe ich das mit den Funktionen noch nicht verstanden?

              Kommentar


              • #8
                In einer Schleife hängt man meißtens den neuen Inhalt an den alten heran, und definiert den Inhalt nicht neu. So könntest du auch mehr als eine (nähmlich die letzte, bei welcher der Inhalt neudefiniert wurde) Zeile machen..
                PHP Handbuch - MySQL Handbuch - PHP Einsteiger Tutorial - CSS Referenz - Browserunterstützung von CSS

                Kommentar


                • #9
                  gedankenfehler


                  PHP-Code:
                  function ansicht_artikel()
                  {

                  //Hier die SQL Abfrage....

                  // dann der Rest

                    
                  $tab1 '<table border="0" width="100%">';
                     
                  $tab2 ='';
                      while (
                  $beitraege mysql_fetch_array($result))
                      {

                      
                  $tab2 .= ' <tr>
                         <td>&nbsp;</td>
                         <td>
                          '
                  .$beitraege['BeitragsTitel'].'
                          </td>
                          </tr>'
                  ;
                                    
                      }
                      
                  $tab3 '</table>';
                       
                  $tabelle $tab1 $tab2 $tab3;

                  return (
                  $tabelle)

                  mfg
                  marc75

                  <Platz für anderes>

                  Kommentar


                  • #10
                    Funktioniert jetzt alles?
                    PHP Handbuch - MySQL Handbuch - PHP Einsteiger Tutorial - CSS Referenz - Browserunterstützung von CSS

                    Kommentar


                    • #11
                      Nein leider nicht. Probiere gerade alle mögliche aus. Habe ja auch einfach mal $tabelle="Hallo" und dieses dann versucht mit return($tabelle) versucht an die default.php weiterzugeben und dann dort mit echo $tabelle auszugeben, aber auch das funktioniert nicht. Ich verstehe das nicht... gut ich gebe zu, dass ich vorher noch nicht mit Funktionen gearbeitet habe, aber so schwer kann das doch nicht sein...

                      Kommentar


                      • #12
                        Syntax einer Funktion:

                        PHP-Code:
                        function funktionsname($parameter1$parameter2) {
                           
                        //Nur, wenn man variablen aus dem Script nutzen will
                           //welches diese Funktion aufruft
                           
                        global $variablevonscript1$variablevonscript2;

                           
                        //Aktionen ausführen...

                           //Rückgabewert definieren (also was man zurückgeben will)
                           
                        $ergebnis = ($parameter1*$parameter2)+($variablevonscript1*$variablevonscript2);

                           
                        //Wert zurückgeben
                           
                        return $ergebnis;
                        // Ende von Funktionsname

                        //Variablen $variablevonscript1 und $variablevonscript2 definieren
                        $variablevonscript1 100;
                        $variablevonscript2 200;

                        //Funktion aufrufen
                        $ergebnisderfunktion funktionsname(3,4);

                        echo 
                        'Ergebnis der Funktion: '.$ergebnisderfunktion

                        Hoffentlich ist dir die Struktur von Funktionen klarer geworden...
                        PHP Handbuch - MySQL Handbuch - PHP Einsteiger Tutorial - CSS Referenz - Browserunterstützung von CSS

                        Kommentar


                        • #13
                          So ich habe die Lösung. Man muss die Variable $tabelle erst als global deklarieren, ansonsten ist die nur in der Funktion verfügbar. (Habe ich im www gefunden)

                          Sieht nun so aus:


                          PHP-Code:
                          global $tabelle;
                          $tabelle=$tab1 $tab2 $tab3
                          Ach ja und das Ganze läuft jetzt ohne return $tabelle. Hätte eigentlich gedacht das ich das brauche, aber funktioniert nur so. Ich danke Euch allen für die Hilfe, obwohl noch keiner darauf eingegangen ist, ob diese Lösung eigentlich zu empfehlen ist. Ist bestimmt ein etwas ungewöhlicher Aufbau, den ich mir da versuche anzueignen. Ich möchte alle SQL Befehle in eine Datei schmeissen. Diese besteht nur aus Funktionen, die dann nach Bedarf aufgerufen werden. Ich möchte dann immer eine Variable zurückbekommen, die mit den Ergebnissen gefüllt ist. Diese wird dann in der Datei Content.tpl aufgerufen mit echo $content.

                          Vielleicht kann ja mal einer der "alten Hasen" was zu diesem Stil sagen. Da ich noch ganz am Anfang stehe, bin ich natürlich auch noch auf der Suche nach dem richtigen Stil.

                          Gruss

                          Kommentar


                          • #14
                            ist aber nicht sauber. Mit return $retvar bist du besser dran, denn bei
                            Verwendung von globalen Variablen in einer Funktion wirst du schnell
                            die Übersicht bei großen Projekte verlieren. Alternativ gibst ja auch noch
                            call by reference.

                            Kommentar


                            • #15
                              Hi asp2php,

                              ähm leider verstehe ich Deine Aussage nicht so ganz. Was für einen Unterschied macht es denn, ob ich nun return $variable oder nicht benutze?
                              Was ist daran unsauber und welche Nachteile hätte ich?

                              Alles was ich momentan mache ist das ich eine default.php habe über die alls gesteuert wird. Je nach Ereignis (es wurde z.B. auf Kategorie c geklickt) wird eine Funktion aufgerufen die dann Werte aus der DB ausliest und eine Tabelle zusammenbaut. Diese Tabelle, samt Werte, wird in eine Variable gespeichert und zurückgegeben. Danach Erfolgt das Eibinden der content.tpl die diese Variable mit echo $content ausgibt.

                              Es gibt also nur "eine" Seite, die je nach Ereignis über verschiedene Fallabfragen und Funktionen zusammengebaut wird.

                              Was ich eigentlich irgendwann erreichen möchte ist das ich einmal bereits erstellte Features ohne grössere Anpassungen weiterverwenden kann. Daher habe ich mir gedacht, dass es klug wäre alles was z.B. die Beiträge betrifft, also auslesen, neu schreiben usw. in eine Datei zu schmeissen und über Funktionen drauf zuzugreifen.

                              Wie gesagt, bin ja noch ein Frischling im Bereich Programmierung und mir daher auch nicht sicher, ob das nun ein kluger Weg ist oder nicht...

                              Über weitere Meinungen würde ich mich freuen.

                              Kommentar

                              Lädt...
                              X