Templates und Schleifen

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

  • Templates und Schleifen

    Hi,
    ich hoffe das ich das ins richtige Board gepostet habe.

    So da ich mich jetzt dazu entschieden habe Layout von der Logic zu trennen, bin ich derzeit an Templatesystemen. Derzeit teste ich pattemplate aus nur stoße ich da schon auf ein (für mich) großes Problem.

    Ich frage meine Datenbank mit Mysql_fetch_array ab, da es sich da um eine Userliste handelt.
    Ohne Templates ging die Ausgabe einfach von der Hand, da die Echobefehle ja in der Whileschleife hingen.

    PHP-Code:
    //vereinfachte form
    while( $row mysql_fetch_array$userlist ) ) {
       echo 
    "$row[UserID]<br>$row[UserName]<br>$row[UserMail]";

    Pattemplate will die jeweiligen Daten in Arrays haben. Übergebe ich dann nur die Variablen
    PHP-Code:
    while( $row mysql_fetch_array$userlist ) ) {
       
    $userid $row["UserID"];
       
    $username $row["UserName"];
       
    $usermail $row["UserMail"];
    }
    .....

       
    $tmpl    =    new    patTemplate();

       
    $tmpl->setBasedir"system/templates" );

       
    $tmpl->readTemplatesFromFile"index.tmpl.html" );

       
    $tmpl->addVars"listeneintrag", array( "ID"         => $userid ,
                                            
    "USERNAME"     => $username,
                                            
    "USERMAIL"     => $usermail  
                                            
    ) );

    $tmpl->displayParsedTemplate( );


    ...ist nach dem ersten Datensatz schluss.
    Meine Frage ist nun wie bring ich das Templatesystem dazu das es alle Daten ausgibt und nicht nur einen Datensatz?

    Bin für jeden Tip dankbar.

    MFG
    Gisu
    Zuletzt geändert von gisu; 13.09.2003, 18:40.

  • #2
    mach mal ein

    echo 'HALLO'; in die schleife und sag, wie oft das hallo ausgegeben wird.

    gibt es bei PAT eine resetblockfunction, oder ähnlich?

    Kommentar


    • #3
      na is ja auch klar diu holst alle daten und überschriebst in deiner While
      $userid = $row["UserID"];
      $username = $row["UserName"];
      $usermail = $row["UserMail"];

      immer wieder.. nach deiner while machst Du dann die template aufrufe...
      Beantworte nie Threads mit mehr als 15 followups...
      Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

      Kommentar


      • #4
        stimmt, du ordnest die daten ja erst nach der while zu. dadurch hast du immer nur den letzten eintrag in der ausgabe. musst also alles ein stück höher schieben...

        Kommentar


        • #5
          Also echo 'hallo' wird fünf mal ausgespuckt. Lass ich mir $username ausgeben stehen auch 5 Usernames drin....alles schön in einer Reihe.
          (War übrigens auch immer nur der letzte Datensatz und nicht der erste wie ich das geschrieben hab - weiterer Fehler der mir unterlaufen ist, ich hab eine geschweifte Klammer reingeschrieben die gar nicht existiert 'sorry')

          So die Templateausgabe kommt ja auch erst nach der While Schleife, nur gibt er mir nur den letzten Datensatz aus, die ersten Vier werden Ignoriert (obwohl sie in der Variable drinstehen)

          Die Zuweisung der Variablen an das Template innerhalb der Whileschleife führt auch nicht zum erfolg.....letzter Datensatz und das wars dann. Vielleicht sollte ich mir mal ein anderes Templatesystem zu gemühte führen mit eine besseren Doku.

          Kommentar


          • #6
            ich kenne pat nicht. aber so wies aussieht, ließt du das template ja 5 mal ein. was unnötig ist und vermtl. die ersten viel überschreibt.

            Kommentar


            • #7
              Ich glaub ich such mir mal ein einfacheres Templatesystem, bei pattemplate steig ich nich durch.
              Danke das ihr mir da helfen wolltet, auch wenn es nicht viel gebracht hat.

              Kommentar


              • #8
                gibst aber früh auf!!!

                Hast du die doc eigentlich schon gelesen. meines wissens ist da ne ausführliche bei, oder erinnere ich mich da falsch?

                Kommentar


                • #9
                  Schnell auf geben tu ich nicht wollte mir nur frust ersparen. So habe ich das Template 1 Stunde lang nicht angeschaut, dann hats mich so sehr gewurmt dann hab ich es noch mal Probiert und siehe da es klappt.

                  PHP-Code:
                  $tmpl = new patTemplate();
                  $tmpl->setBasedir"system/templates" );
                  $tmpl->readTemplatesFromFile"index.tmpl.html" );

                  $result $db->query("SELECT * FROM user");
                  while(
                  $row $db->fetch_object($result)) {
                      
                      
                  $tmpl->addVar("listeneintrag""ID"$row->UserID);
                      
                  $tmpl->addVar("listeneintrag""UserName"$row->UserName);
                      
                  $tmpl->parseTemplate("listeneintrag""a");
                  }

                  $tmpl->displayParsedTemplate( ); 
                  Das eigentliche Problem waren ja die Arrays und die Schleife. Nach einigem Suchen bin ich dann auf eine englische Seite gestoßen die zwei gute Tutorials für PatTemplate gemacht haben.
                  Hast Recht, es gibt eine dicke Doku, aber richtig schlau wird man daraus nicht - zumindestens ich. Ich brauch halt ein paar Praktische Beispiele und von denen leite ich dann ab.

                  Kommentar


                  • #10
                    ich fand die docu ganz interessant zu lesen. hab die classe aber nie angesehen, geschweige denn genutzt

                    Kommentar


                    • #11
                      Das selbe prob :-(

                      Hi Leute, ich hab genau das selbe prob, aber irgendwie werde ich aus euren posts nicht schlau wie ihr das Problem gelöst habt....

                      hier erstmal meinen Code :

                      PHP-Code:
                      // Newsabfrage
                      $result mysql_query("SELECT * FROM abi05_news ORDER BY timestamp DESC");
                      while(
                      $row mysql_fetch_object($result))
                      {
                      $newstitel $row->newstitel;
                      $newsinhalt $row->newsinhalt;
                      $newsart $row->newsart;
                      $newsname $row->newsname;
                      $newstimestamp $row->timestamp;
                      $newsdatum date("\a\m d.m.Y \u\m G:i:s ",$newstimestamp);
                      $tmpl->addVar("news""NEWSTITEL"$newstitel);
                      $tmpl->addVar("news""NEWSINHALT"$newsinhalt);
                      $tmpl->addVar("news""NEWSART"$newsart);
                      $tmpl->addVar("news""NEWSNAME"$newsname);
                      $tmpl->addVar("news""NEWSDATUM"$newsdatum);

                      So... ich möchte aus der Tabelle "abi05_news" meine News nach Datum geordnet auslesen... Und dann im Template "news" posten, dabei soll das Template sich wiederholen, bis alle News geposted worden sind...

                      Könnt ihr mir helfen ?

                      Greez
                      Scio me nihil scire - Sokrates

                      Ich weiß, dass ich nichts weiß - Sokrates

                      [color="red"]UNDANK IST DER WELTEN LOHN ![/color]

                      Kommentar


                      • #12
                        sorry für den Doppelpost, aber hier ist der Link zur Homepage falls ihr euch dass nicht vorstellen könnt :

                        www.qgabi.de.vu

                        ich hoffe ich hab mich so ausgedrückt dass ihr mein Prob versteht
                        Scio me nihil scire - Sokrates

                        Ich weiß, dass ich nichts weiß - Sokrates

                        [color="red"]UNDANK IST DER WELTEN LOHN ![/color]

                        Kommentar


                        • #13
                          Abi 05

                          $tmpl->parseTemplate("listeneintrag", "a"); das ist, wenn ich mich recht erinnere die wichtige funktion.
                          Zuletzt geändert von TobiaZ; 04.12.2003, 14:15.

                          Kommentar


                          • #14
                            ah, danke

                            ich hab doch das "a" glatt übersehen... das "listeneintrag" bezieht sich nämlich auf das Template, es muss also heißen :

                            PHP-Code:
                            $tmpl->parseTemplate("/*Hier steht der Templatename*/""a"); 
                            danke das ging echt fix....

                            man kann das Ergebniss schon sehen :-)


                            OT : Was sit das eigentlcih für ne anspielung ? ABI 05
                            Auch Abi ? oder schon lange her ? Ich hab ja noch Zeit ....
                            Scio me nihil scire - Sokrates

                            Ich weiß, dass ich nichts weiß - Sokrates

                            [color="red"]UNDANK IST DER WELTEN LOHN ![/color]

                            Kommentar


                            • #15
                              man kann das Ergebniss schon sehen :-)
                              bis grade waren noch platzhalter zu sehen, ich schaus mir noch mal an...

                              OT : Was sit das eigentlcih für ne anspielung ? ABI 05
                              Dito!

                              Kommentar

                              Lädt...
                              X