TB: PHP Ausgabe Homepage nebeneinander

So sieht die Ausgabe bisher aus: (untereinander für jeden Datensatz)

<?
while ($db->next_datensatz())
{
echo "<table ...; //Ausgabe meiner tabelle untereinander
echo "         ";
}
?>

Bild:
_
_
_
_
_
...

Ich will die Ausgabe aber so haben: Table mit 5 in einer zeile
dann <br> Table mit 5 in einer zeile
dann <br> und so weiter.

Bild:
-----
-----
-----
-----
...

wie kann ich das realisieren?

Gruß TB

  1. So sieht die Ausgabe bisher aus: (untereinander für jeden Datensatz)
    echo "<table></tr>
    <?
    while ($db->next_datensatz())
    {

    echo"<td>ausgabe</td>;

    if(i!<5) echo"</tr><tr>

    }
    ?>
    echo "</tr></tabele>";

    ungefähr so...
    grüße carsten

    1. wie würde das dann hier aussehen: (so ist es noch als reihe, die ausgabe). Mein Wunsch wäre es ein table mit 5 Spalten auszugeben dann ein break...

      <?
      while ($db->next_datensatz())
      {
      echo "<table width="100%" border="0" cellspacing="0" cellpadding="0">\n";
      echo "<tr>\n";
      printf("<td>%s</td>",@date("d.m.Y",$db->f("datum")) );
      echo "</tr>\n";
      echo "<tr>\n";
      echo "<td><img src="grafik/spacer.gif" width="441" height="1"></td>\n";
      echo "</tr>\n";
      echo  "<tr>\n";
      echo  "<td><span class="verdana11schwarz">\n";
      printf("<strong>%s</strong>\n",nl2br($db->f("titel")) );
      echo" </span></td>\n";
      echo" </tr>\n";
      echo" <tr>\n ";
      echo" <td valign="top"><span class="verdana11schwarz">\n";
      printf("%s [<a href="detail.php?nid=%d">weiter...</a>]",nl2br($db->f("short_text")),$db->f("nid") );
      echo" </span></td>\n";
      echo" </tr>\n";
      echo"</table>";
      echo"<br><br>";
      }
      ?>

      Gruß TB

      1. bin schon näher dran, stimmt aber noch nicht ganz, was ist hier noch verkehrt?

        <?
        echo $anzahl;
        for($i=0; $i<$anzahl; $i++){
        echo "<table>";
        for($i=0; $i<3; $i++){
        $db->next_datensatz();
        echo "<td>";
        echo "<table width="100%" border="0" cellspacing="0" cellpadding="0">\n";
        echo "<tr>\n";

        printf("<td>%s</td>",@date("d.m.Y",$db->f("datum")) );
        echo "</tr>\n";
        echo "<tr>\n";
        echo "<td><img src="grafik/spacer.gif" width="441" height="1"></td>\n";
        echo "</tr>\n";
        echo  "<tr>\n";
        echo  "<td><span class="verdana11schwarz">\n";
        printf("<strong>%s</strong>\n",nl2br($db->f("titel")) );
        echo" </span></td>\n";
        echo" </tr>\n";
        echo" <tr>\n ";
        echo" <td valign="top"><span class="verdana11schwarz">\n";
        printf("%s [<a href="detail.php?nid=%d">weiter...</a>]",nl2br($db->f("short_text")),$db->f("nid") );
        echo" </span></td>\n";
        echo" </tr>\n";
        echo"</table>";
        echo "</td>";
        echo"<br><br>";
        }
        echo "</table>";
        echo "<br>";
        }
        ?>

        TB

  2. Versuch mal:

    <?
    echo "<table>";
    while ($db->next_datensatz())
    {
    echo "<tr><td>$db[1]</td><td>$db[2]</td><td>$db[3]</td>...usw</tr> ;
    }
    echo "</table>";
    ?>

    ist das so, wie du wolltest? Oder hab ich was falsch verstanden?

  3. Ich will die Ausgabe aber so haben: Table mit 5 in einer zeile
    dann <br> Table mit 5 in einer zeile
    dann <br> und so weiter.

    Bild:




    ...

    wie kann ich das realisieren?

    Benutze..

    a) zwei Schleifen, eine äußere mit while(), wie Du sie bereits jetzt hast sowie eine innere mit for(), die fünfmal durchlaufen wird.

    b) eine while()-Schleife wie jetzt, wobei Du einen Zähler ($i ist sehr beliebt) einfügst, der nach jeder fünften Zelle ($i%5==0, sprich Rest aus der Division von $i durch 5 soll 0 sein) eine neue Zeile (oder Tabelle) beginnt.

    Gruß,
      soenk.e

    1. soweit hab ich es jetzt . die schleife hört aber nie auf. habe ich da was falsch?

      <?

      while($i%5==0){
      echo "<table>";
      for($k=0; $k<5; $k++){
      $db->next_datensatz();
      echo "<td>";
      echo "<table width="100%" border="0" cellspacing="0" cellpadding="0">\n";
      echo "<tr>\n";

      printf("<td>%s</td>",@date("d.m.Y",$db->f("datum")) );
      echo "</tr>\n";
      echo "<tr>\n";
      echo "<td><img src="grafik/spacer.gif" width="441" height="1"></td>\n";
      echo "</tr>\n";
      echo  "<tr>\n";
      echo  "<td><span class="verdana11schwarz">\n";
      printf("<strong>%s</strong>\n",nl2br($db->f("titel")) );
      echo" </span></td>\n";
      echo" </tr>\n";
      echo" <tr>\n ";
      echo" <td valign="top"><span class="verdana11schwarz">\n";
      printf("%s [<a href="detail.php?nid=%d">weiter...</a>]",nl2br($db->f("short_text")),$db->f("nid") );
      echo" </span></td>\n";
      echo" </tr>\n";
      echo"</table>";
      echo "</td>";
      echo"<br><br>";
      }
      echo "</table>";
      echo "<br>";
      }
      ?>

      1. nochmal geändert, jetzt werden zwar alle datensätze in 5 spalten pro zeile ausgegeben aber jede reihe hat die selben einträge. bin ich nahe dran?

        <?
        while($db->next_datensatz()){

        echo "<table>";
        for($k=0; $k<5; $k++){
        echo "<td>";
        echo "<table width="100%" border="0" cellspacing="0" cellpadding="0">\n";
        echo "<tr>\n";

        printf("<td>%s</td>",@date("d.m.Y",$db->f("datum")) );
        echo "</tr>\n";
        echo "<tr>\n";
        echo "<td><img src="grafik/spacer.gif" width="441" height="1"></td>\n";
        echo "</tr>\n";
        echo  "<tr>\n";
        echo  "<td><span class="verdana11schwarz">\n";
        printf("<strong>%s</strong>\n",nl2br($db->f("titel")) );
        echo" </span></td>\n";
        echo" </tr>\n";
        echo" <tr>\n ";
        echo" <td valign="top"><span class="verdana11schwarz">\n";
        printf("%s [<a href="detail.php?nid=%d">weiter...</a>]",nl2br($db->f("short_text")),$db->f("nid") );
        echo" </span></td>\n";
        echo" </tr>\n";
        echo"</table>";
        echo "</td>";
        echo"<br><br>";
        }
        echo "</table>";
        echo "<br>";
        }
        ?>

        TB

        1. nochmal geändert, jetzt werden zwar alle datensätze in 5 spalten pro zeile ausgegeben aber jede reihe hat die selben einträge. bin ich nahe dran?

          <?
          while($db->next_datensatz()){

          echo "<table>";
          for($k=0; $k<5; $k++){
          printf("<td>%s</td>",@date("d.m.Y",$db->f("datum")) );
          }
          echo "</table>";
          echo "<br>";
          }
          ?>

          Als erstes würde ich Dir raten, mal etwas Ordnung in Deinen Code zu bringen. Wenn Du jede Zeile in der ersten Spalte beginnst, muß man jedesmal erst eine halbe Ewigkeit suchen, um das Ende eines Funktionsblocks zu finden.

          Zweitens solltest Du Fehlermeldungen nicht mit dem Klammeraffen unterdrücken. Wenn Fehler auftreten, solltest Du darauf reagieren und das Problem beseitigen - Ignorieren hilft eher selten bis gar nicht.
          Wenn Du keine Fehlermeldungen in der Webseite haben willst (was vollkommen korrekt ist), dann leite sie in das Fehlerprotokoll des Webservers um und schalte die sichtbare Ausgabe ab (siehe display_errors und log_errors in der PHP-Anleitung, Kapitel Konfiguration).

          Drittens solltest Du Dir im obigen Codeschnippsel mal anschauen, wann Du den Datensatz tatsächlich wechselst und wann es eigentlich nötig wäre. Du hast zwei Schleifen und nur einen Wechsel..

          Gruß,
            soenk.e