einlesen in table/tr/td/td mit loop

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

  • einlesen in table/tr/td/td mit loop

    Hallo,
    kann mir bitte jemand helfen ich habe folgendes Problem:
    ich lese aus einer db einen Titel und einen Bericht aus und mit smarty möchte ich alles in die cellen importieren.
    Die Ausgabe sollte so aussehen:
    • [COLOR=blue] Titel1 | Titel2 [/COLOR]
    • [COLOR=red] Text1 | Text2 [/COLOR]

    ich nehme an dass bei jedem loop nur eine celle je Reihe gefüllt wird.
    wenn man einen loop nur mit odd und danach wieder einen loop mit even durchlaufen lassen würde oder kann ...?
    Andere Lösung, zweiten Table und ein zweites Template
    bei dem folgenden code werden alle Daten ausgegeben aber die Ausgabe sieht so aus:
    • [COLOR=blue]Titel[/COLOR]
    • [COLOR=red]Text[/COLOR]


    vielen dank im Voraus
    Ron

    PHP-Code:
    <table width="100%" height="0" border="0" align="center" cellpadding=4 cellspacing=5 div id="tablemess">
      {
    section name=nr loop=$results
      <
    tr >
         {if 
    $smarty.section.nr.iteration is odd}  
       <
    td width="30%"><div id="Titel">{$results[nr].news_titel}</div></th>
         {else}
       <
    td width="30%"><div id="Titel">{$results[nr].news_titel}</div></td>
         {/if}

      </
    tr>
      <
    tr
         {if 
    $smarty.section.nr.iteration is odd}  
      <
    td width="30%">{$results[nr].news_text}</div></th>
         {else}
      <
    td width="30%">{$results[nr].news_text}</div></td>
         {/if}
      </
    tr>
      {/
    section
    </
    table
    Zuletzt geändert von TobiaZ; 07.06.2003, 21:13.

  • #2
    PHP-Problem???

    Kommentar


    • #3
      das ganze ist mit php erstellt, sollte ich mit dieser Frage hier falsch liegen bitte um entschuldigung.
      Ron

      Kommentar


      • #4
        Ist auch egal. weiß grad nicht wohin damit. Aber hat smarty kein Forum (wegen Fachwissen). Hat aber zumindest ne ausführliche Doku. Vielleicht steht da was drin. Ich für meinen Teil kenne mich mit smarty leider nicht aus.

        Kommentar


        • #5
          danke TobiaZ
          so viel ich weiss nicht, aber das ganze ist nicht gerade ein smarty sondern ein logisches loop problem wo ich momentan ansteh.
          Wie fülle ich /table/tr/td/td/tr/td/td .... aus einem array ...
          Gruß Ron
          Zuletzt geändert von ron9999; 07.06.2003, 21:30.

          Kommentar


          • #6
            Ich hab keinen blassen Schimmer was Smarty sein soll.
            In PHP würde ich die Daten aus der Datenbank in einen Array laden und erst dann ausgeben.

            $MyArray [$Recordnummer Text]
            $MyArray [$Recordnummer Titel]
            $MyArray [$Recordnummer Tabc]

            Kommentar


            • #7
              @hand: Uknow Smarty ??

              Kommentar


              • #8
                danke hand,
                smarty ist ein template
                ok die daten hab ich in einem array $results doch wie kann ich die Daten einlesen damit die gewünschte Formatierung raus kommt?
                Gruß Ron

                Kommentar


                • #9
                  @hand Smarty ist eine template-engine die templates compliert, und zwar in php-scripts, welche dann sehr schnell ablaufen

                  ich finde ja Smarty ist etwas "übergewichtig" ... weshalb ich SmartTemplate einsätze ^^

                  und die Smarty "sprache" ist nicht die einfachste, als designer wäre ich nicht gerade erpicht darauf sie erlernen zu müssen

                  @ron9999

                  "<td ...> ... </th>" seitwann hört ein TD mit TH auf?

                  Kommentar


                  • #10
                    bin zu einer Teillösung gekommen, um die daten so in das template einzulesen wie ich möchte muss ich das array $results ändern.
                    Bei diesen script

                    PHP-Code:
                    $i=0
                    while (
                    $r=mysql_fetch_array($res)) { 
                                
                    $tmp = array( 
                                
                    "news_titel_0"    => $r["titel"],     // read title
                                
                    "news_text_0"    => $r["text"]     // read text
                                
                    );
                                
                    $results[$i++] = $tmp;                // add to results     

                    erhalte ich dieses array:

                    Array ( [0] => Array ( [news_titel_0] => title1 [news_text_0] => text1) [1] => Array ( [news_titel_0] => title2 [news_text_0] => text2........)
                    ich brauche aber
                    Array ( [0] => Array ( [news_titel_0] => title1 [news_titel_0] => title2) [1] => Array ( [news_text_0] => text1 [news_text_0] => text2........)
                    jetzt muss ich nur mehr herausfinden wie ich das scipt umbauen muss

                    Ron

                    @freudenspender
                    schon gecheckt danke

                    Kommentar


                    • #11
                      PHP-Code:
                      Array ( [0] => Array ( [news_titel_0] => title1 [news_titel_0] => title2) [1] => Array ( [news_text_0] => text1 [news_text_0] => text2........) 
                      dürfte nicht gehen, da du ja die indexe doppelt in den arrays hast.

                      Kommentar


                      • #12
                        Sample: Tabelle besteht aus zwei Datenfeldern "year" und "response"
                        PHP-Code:
                        <?php
                        mysql_connect
                        ("localhost""""") or die("could not connect");
                        mysql_select_db("test"); // Datenbank auswählen

                        $abfrage "SELECT * FROM demo";
                        $ergebnis mysql_query($abfrage) or print "&gt;&gt;&gt; MySQL-Error: "    mysql_errno() . " -&gt; " mysql_error()."<br>\n";
                        $numrs mysql_num_rows($ergebnis); 
                        print 
                        "<b>Here are your results: $numrs records.</b>"

                        print 
                        "<table border=1>\n"
                        while (
                        $line mysql_fetch_assoc($ergebnis)) { 
                            print 
                        "<tr>\n"
                            
                        $index++; 
                            while(list(
                        $col_name$col_value) = each($line)) {
                                
                        $MyArray[$col_name][$index] = $col_value;
                                print 
                        "<td>$col_name$col_value</td>\n"
                            } 
                            print 
                        "\t</tr>\n"

                        print 
                        "</table><hr>\n"

                        print 
                        "<table border=1>\n";
                        // fuers erste Datenfeld in meinem Fall "year"
                        for ($i 1$i <= $index$i++) { 
                           print 
                        "<td>".$MyArray[year][$i]."</td>";
                        }
                        print 
                        "<tr>";
                        // fuers zweite Datenfeld in meinem Fall "response"
                        for ($i 1$i <= $index$i++) { 
                           print 
                        "<td>".$MyArray[response][$i]."</td>";
                        }
                        print 
                        "</table>\n"
                        ?>
                        Die Ausgabe kann man sicher eleganter machen. Auf die Ausgabe der ersten Tabelle kann man auch verzichten.

                        Kommentar


                        • #13
                          Und weil es so lustig ist, das ganze ohne Ausgabe der ersten Tabelle
                          PHP-Code:
                          <?php
                          mysql_connect
                          ("localhost""""") or die("could not connect");
                          mysql_select_db("test");

                          $abfrage "SELECT * FROM demo";

                          $ergebnis mysql_query($abfrage)
                            or print 
                          "&gt;&gt;&gt; MySQL-Error: ".mysql_errno()." -&gt; ".mysql_error()."<br>\n";

                          while (
                          $line mysql_fetch_assoc($ergebnis)) { 
                              
                          $index++; 
                              while(list(
                          $col_name$col_value) = each($line)) {
                                  
                          $MyArray[$col_name][$index] = $col_value;
                              } 


                          print 
                          "<table border=1>\n";
                           for (
                          $i 1$i <= $index$i++) { 
                              print 
                          "<td>".$MyArray[year][$i]."</td>";
                           }
                           print 
                          "<tr>";
                           for (
                          $i 1$i <= $index$i++) { 
                              print 
                          "<td>".$MyArray[response][$i]."</td>";
                           }
                          print 
                          "</table>\n"
                          ?>

                          Kommentar


                          • #14
                            danke für die Tips, vielleicht um die Prozedure besser darzustellen:

                            PHP-Code:
                            <?php

                            $i
                            =0
                            while (
                            $r=mysql_fetch_array($res)) { 
                                        
                            $tmp = array( 
                                        
                            "news_titel_0"    => $r["titel"],     // read title
                                        
                            "news_text_0"    => $r["text"]     // read text
                                        
                            );
                                        
                            $results[$i++] = $tmp;                // add to results     



                            // das array $results an template übergeben 
                            $smarty->assign('results'$results); 
                            // template compilieren und ausgeben
                            $smarty->display($_SERVER['DOCUMENT_ROOT'] . "/templates/my2.tpl.html"); 


                            //   TEMPLATE.TPL.HTML


                            <table width="100%" height="0" border="0" align="center" cellpadding=4 cellspacing=5 div id="tablemess">
                              {
                            section name=nr loop=$results
                              <
                            tr>
                               <
                            td width="30%"><div id="Titel">{$results[nr].news_titel_0}</div></td>
                                <
                            td width="30%"><div id="Titel">{$results[nr].news_titel_0}</div></td>
                               </
                            tr>
                              <
                            tr>
                               <
                            td width="30%">{$results[nr].news_text_0}</div></td>
                               <
                            td width="30%">{$results[nr].news_text_0}</div></td>
                               </
                            tr>
                               {
                            sectionelse}
                               
                            keine Werte in $results gefunden
                               
                            {/section
                            </
                            table

                            ?>
                            @TobiaZ
                            hab einen fehler im key
                            das geht
                            Array ([COLOR=red] [0][/COLOR] => Array ([COLOR=orange] [news_titel_0][/COLOR] => title1 [COLOR=darkblue][news_text_0] [/COLOR] => text1)[COLOR=red] [1] [/COLOR]=> Array ( [COLOR=orange] [news_titel_0][/COLOR] => title2 [COLOR=darkblue][news_text_0] [/COLOR] => text2........)
                            müsste das auch gehen?
                            Array ([COLOR=red] [0][/COLOR] => Array ( [COLOR=orange] [news_titel_0][/COLOR]=> title1 [COLOR=orange] [news_titel_0][/COLOR] => title2) [COLOR=red] [1][/COLOR] => Array ( [COLOR=darkblue][news_text_0] [/COLOR] => text1 [COLOR=darkblue][news_text_0] [/COLOR] => text2........)



                            Gruß
                            Ron
                            Zuletzt geändert von ron9999; 08.06.2003, 15:13.

                            Kommentar


                            • #15
                              hand
                              ich brauche

                              PHP-Code:
                                 <tr>
                                 print 
                              "<td>"$MyArray[year][$i]"</td>"
                                 
                              print "<td>"$MyArray[year][$i]"</td>"
                                 
                              </tr>
                                 <
                              tr>
                                 print 
                              "<td>"$MyArray[response][$i]"</td>";
                                 print 
                              "<td>"$MyArray[response][$i]"</td>";
                                 </
                              tr
                              um eine Ausgabe in 2 Spalten zu bekommen wie
                              year year
                              response respons
                              Gruß

                              Ron

                              Kommentar

                              Lädt...
                              X