Ankündigung

Einklappen
Keine Ankündigung bisher.

Nur der letzte Wert im Array wird angezeigt

Einklappen

Neue Werbung 2019

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

  • Nur der letzte Wert im Array wird angezeigt

    Hallo,

    ich hab da ein Problem.
    Es wird immer nur das letzte Element aus dem Array - im Template - angzeigt.
    Was mache ich falsch?

    PHP-Code:
    <?php
    $anz 
    count($question);
    foreach(
    $question as $quest){
        for (
    $i=0$i<$anz$i++){
            
    $tpl->set_var("QUEST""$quest");
            
    $tpl->parse("out""QUEST");
        }    
    }  

    ?>
    Alle anderen ausgaben mit "echo" - innerhalb der for-Schleife - werden
    richtig ausgegeben
    Würd mich freuen wenn mir jemand helfen könnte/würde.

    ist mit etwa 0,933 Volumen % das am häufigsten
    in der Atmosphäre vorkommende Edelgas.

  • #2
    Wofür die innere for-Schleife?

    Kommentar


    • #3
      naja, ich dachte mir das ich dadurch die einelnen Werte im Array durchlaufe, weil er
      immer nur das letzte Element anzeigt.

      Aber auch wenn ich die For-Schleife weglasse, zeigt er mir nur das letzte Element an.
      Also ist es scheinbar überflüssig ---> Das meintest du sicherlich damit.... :wink:

      Hab leider noch nicht so viel Erfahrung und "brech mir hir voll den Ast"...
      Hast Du denn vielleicht eine Idee, wie ich dieses Problem lösen könnte????

      ist mit etwa 0,933 Volumen % das am häufigsten
      in der Atmosphäre vorkommende Edelgas.

      Kommentar


      • #4
        Mit Templates habe ich wenig Erfahrung. Führe mal bitte

        print_r($question);

        aus und poste die Ausgabe hier. Oder weißt du wie der Array aufgebaut ist (assoziative oder numerische Schlüssel)?

        Kommentar


        • #5
          Welches Templatesystem benutzt Du überhaupt?

          Kommentar


          • #6
            Hi Zerling,
            hab es mal ausgeführt

            Ergebnis:
            Array ( [c_quest] => eine Frage [0] => weitere Frage [1] => und noch eine Frage )

            seltsam ist, das er nicht mit [0] anfängt, sonder mit c_quest.
            c_quest ist die Spaltenbezeichnung aus der DB.
            hmmm....???!!!

            @Bruchpilot:
            benutze das phplib Template-System

            ist mit etwa 0,933 Volumen % das am häufigsten
            in der Atmosphäre vorkommende Edelgas.

            Kommentar


            • #7
              auf der Seite question.php werden die Daten aus der DB geholt und an das Template übergeben.
              So schaut es aus:

              PHP-Code:
              <?php
              .
              .
              .
              while(
              $zeile=mysql_fetch_array($result)){
                  
              array_push($array$zeile["c_quest"]); 
              }

              $question $array;

              include(
              "inc/template.inc.php");//Ausgabe erfolgt in template.inc.php
              ?>

              ist mit etwa 0,933 Volumen % das am häufigsten
              in der Atmosphäre vorkommende Edelgas.

              Kommentar


              • #8
                Dann schau Dir mal die Beispiele unter http://www.sanisoft.com/phplib/manua...teExamples.php zu Blöcken an.

                Kommentar


                • #9
                  Vielen Dank das sieht sehr interessant aus.... :wink:

                  ist mit etwa 0,933 Volumen % das am häufigsten
                  in der Atmosphäre vorkommende Edelgas.

                  Kommentar


                  • #10
                    Habe jetzt eine "einfachere" Variante ausprobiert (ohne DB...etc..)
                    ---> Ergebnis: es wird wieder nur das letzte Element ausgegeben.


                    blockBeispiel.tpl.php

                    Code:
                    <html>
                     <head><title>{TITLE}</title></head>
                     <body>
                      
                        <table>
                          <tr><td>{BLOCKINHALT}</tr></td>
                        </table>
                      
                      </body>
                    </html>

                    blockBeispiel.php
                    PHP-Code:
                    <?php

                    $content
                    ="blockBeispiel.tpl.php";


                    //Ausgabe erfolgt in template.inc.php
                    include("inc/template.inc.php");


                    ?>
                    template.inc.php
                    PHP-Code:
                    <?php
                    ...

                    /*************Block-Beispiel************/

                    $tpl->set_file("seite""$content");
                    $tpl->set_block("seite""block""blockbereich");

                    $tpl->set_var(array("TITLE" => "Das ist mein Seitentitel"));

                    for (
                    $i 1$i <= 10; ++$i) {
                      
                    $tpl->set_var(array("BLOCKINHALT" => $i));
                      
                    $tpl->parse("blockbereich""block"true);
                    }

                    $tpl->parse("out""seite");

                    /*************Block-Beispiel************/

                    ...
                    ?>



                    Es sollen die Zahlen von 1-10 im {BLOCKINHALT} ausgegeben werden, es wir aber wieder nur das letzte Element ausgegeben, also die 10.

                    Wenn ich dieses Beispiel ohne die Seite blockBeispiel.php ausführe und den Datei-Namen blockBeispiel.tpl.php
                    direkt auf der Seite template.inc.php übergebe, dann funktioniert es einwandfrei. --> Zahlen von 1-10 werden untereinader aufgelistet...

                    Was mache ich falsch?

                    ist mit etwa 0,933 Volumen % das am häufigsten
                    in der Atmosphäre vorkommende Edelgas.

                    Kommentar


                    • #11
                      Du überschreibst die Daten doch bei jedem Schleifendurchlauf, oder sehe ich das falsch?
                      Dann ist doch klar, dass nur der letzte Eintrag ausgegeben wird.

                      Habe den Link von Bruchpilot nicht geöffnet.
                      Falls dort die Erklärung steht .. sorry.

                      Vielleicht kann dir das Tutorial von MrNiceGuy zur Entwicklung einer eigenen Template-Engine da weiterhelfen?
                      http://forum.developers-guide.net/thread407.html

                      Grüße Ben.
                      [b][url=http://www.benjamin-klaile.de]privater Blog[/url][/b]

                      Kommentar


                      • #12
                        Ja du überschreibst bei jedem Schleifendurchlauf deinen BLOCKINHALT mit dem aktuellen Wert von $i.
                        Logisch, dass dann der letzte genommen wird.

                        Kommentar


                        • #13
                          Vielen Dank für die Infos....

                          aaaber...ich versteh das immer noch nicht genau.
                          Im Moment habe ich meine template.inc.php so:

                          PHP-Code:
                          <?php
                          //Einfügen der Template Klasse von Kristian Köhntopp
                          require("template_class.inc.php");

                          $tpl = new template("./tpl/","keep");

                          $tpl->set_file("CONTENT"$content);
                          $tpl->parse("temp""CONTENT");
                              

                          /*************Block-Beispiel************/
                          $tpl->set_file("seite""$content");
                          $tpl->set_block("seite""block""blockbereich");

                          $tpl->set_var(array("TITLE" => "Das ist mein Seitentitel"));

                          for (
                          $i 1$i <= 10; ++$i) {
                            
                          $tpl->set_var(array("BLOCKINHALT" => $i));
                            
                          $tpl->parse("blockbereich""block"true);
                          }
                          $tpl->parse("out""blockbereich");

                          /*************Block-Beispiel************/


                          $tpl->set_file("template""template.tpl.php");
                          $tpl->parse("out""template");
                          $tpl->p("out");

                          ?>
                          Und wenn ich da wo seite steht mit template austauche (siehe unten), gibt er mir die Zahlen von 1-10 aus, aber leider nicht in dem Bereich wo es stehen soll, sonder über die gesamte Seite.

                          PHP-Code:
                          <?php
                          $tpl
                          ->set_file("seite""$content");
                          $tpl->set_block("seite""block""blockbereich");
                          ?>
                          Also ist es doch eher ein anderes Problem, oder seh ich das falsch.
                          Sorry, wenn ich mich vielleich blöd anstelle, aber ich mach noch nicht so lange mit Templates....

                          ist mit etwa 0,933 Volumen % das am häufigsten
                          in der Atmosphäre vorkommende Edelgas.

                          Kommentar


                          • #14
                            Ehrlich gesagt blick ich nicht durch, was du durch was ersetzen willst, aber der Fehler ist immernoch drinne
                            PHP-Code:
                            <?php
                            for ($i 1$i <= 10; ++$i) {
                              
                            $tpl->set_var(array("BLOCKINHALT" => $i)); // <--
                              
                            $tpl->parse("blockbereich""block"true);
                            }
                            ?>

                            Kommentar


                            • #15
                              @Zerlig
                              Ich verstehe wirklich nicht warum das falsch sein soll so funktioniert es doch auch:

                              blocktest.php
                              PHP-Code:
                              <?php

                              $content
                              ="vorlage.tpl.php";

                              include(
                              "template.php");


                              ?>

                              template.php
                              PHP-Code:
                              <?php

                              require("template_class.inc.php");

                              $tpl = new Template();

                              $tpl->set_file("seite""$content");
                              $tpl->set_block("seite""block""blockbereich");

                              $tpl->set_var(array("TITLE" => "Mein Seitentitel"));

                              for (
                              $i 1$i <= 10; ++$i) {
                                
                              $tpl->set_var(array("BLOCKINHALT" => $i));
                                
                              $tpl->parse("blockbereich""block"true);
                              }

                              $tpl->parse("out""seite");
                              $tpl->p("out"); 
                              ?>
                              vorlage.tpl.php

                              Code:
                              <html>
                               <head><title>{TITLE}</title></head>
                               <body>
                                
                                  <table>
                                    <tr><td>{BLOCKINHALT}</tr></td>
                                  </table>
                                
                                </body>
                              </html>
                              Ausgabe:
                              Code:
                              1
                              2
                              3
                              4
                              5
                              6
                              7
                              8
                              9
                              10
                              Warum funktioniert denn da die Ausgabe mit der Zeile die Du markiert hast?
                              Code:
                              $tpl->set_var(array("BLOCKINHALT" => $i));
                              Versteht denn niemand was ich meine, oder ist meine Frage nicht richtig gestellt???

                              Wäre schön wenn ihr mir ein kleines Code-Beispiel geben würdet, wie ihr es lösen würdet....nur ein klitzekleines Schnipselchen.....
                              ich hänge schon den Tag an diesem Prob.....Pleaaaaase.....

                              ist mit etwa 0,933 Volumen % das am häufigsten
                              in der Atmosphäre vorkommende Edelgas.

                              Kommentar

                              Lädt...
                              X