andreas: Datensätze beim Auslesen in 4 Spalten aufteilen

Hallo

ich lese aus der DB eine Tabelle aus die z.B. in 4 Spalten angezeigt werden
sollen?

z.B. für eine Bildergallerie

hier ein Kurzauszug meines Scriptes:

$bilder = mysql_query("select * from bild");

while ($zeile1 = mysql_fetch_array($bilder))
{
echo "<tr>";
echo "<td><img src='bilder/".$zeile1["bild"]."' border='1'></td>";
echo "<tr>";
<?
}
?>

Hier wird alls untereinander Dargestellt
lasse ich die <tr></tr> weg wird alles neben einander Dargestellt

Danke

  1. Hallo!

    $bilder = mysql_query("select * from bild");

    while ($zeile1 = mysql_fetch_array($bilder))
    {
    echo "<tr>";
    echo "<td><img src='bilder/".$zeile1["bild"]."' border='1'></td>";
    echo "<tr>";
    <?
    }
    ?>

    Hier wird alls untereinander Dargestellt
    lasse ich die <tr></tr> weg wird alles neben einander Dargestellt

    Klar! Denn bei jedem <tr> wird eine neue Zeile begonnen. Am besten schreibst Du eine verschachtelte Schleife (die <td>'s innen, und die <tr>'s aussen).

    Gruß,
    Peter

    1. Hallo

      Klar! Denn bei jedem <tr> wird eine neue Zeile begonnen. Am besten schreibst Du eine verschachtelte Schleife (die <td>'s innen, und die <tr>'s aussen).

      und wie am besten?

      Danke

      1. Hallo zusammen,

        da ist wohl jetzt was quer gelaufen?
        Ich habe die Frage so verstanden:

        Ich erhalte durch eine Abfrage ein Resultset das n Datensätze enthält. Die will ich in einem vierspaltigen Satz darstellen.

        Datensatz 1   Datensatz 6   Datensatz 11  Datensatz 16
        Datensatz 2   Datensatz 7   Datensatz 12  Datensatz 17
        Datensatz 3   Datensatz 8   Datensatz 13  Datensatz 18
        Datensatz 4   Datensatz 9   Datensatz 14
        Datensatz 5   Datensatz 10  Datensatz 15

        Denn die andere Darstellung:

        Datensatz 1   Datensatz 2   Datensatz 3   Datensatz 4

        dürfte ja wohl keine Kopfschmerzen bereiten, oder?

        Bei der oberen Darstellung kann ich folgendermaßen vorgehen:
        Ich besorge mir die Anzahl der Datensätze im Resultset

        $spaltenzahl = 4;

        // hier das Query: $res= .....

        if ($res)
        {
          $anzahl = mysql_num_rows($res);
        }
        else
        {
          echo "Fehler in der Datenbankabfrage";
        }

        $zeilenzahl = ceil($anzahl/$spaltenzahl);

        //und dann die Ausgabe:

        echo "<table ...>":
        echo "<tr ...>";

        $spalte=0;
        while($spalte<$spaltenzahl)
        {
          echo "<td ... nowrap>";
          $zeile=0;
          while ($zeile<$zeilenzahl)
          {
            $zeile++;
            $zeilenarray=mysql_fetch_row($res);
            echo $zeilenarray[x];   // x ist das auszugebende Feld
            echo "</td>";
          }
          $spalte++;
        }

        echo "</tr>";
        echo "</table>";

        Habe es nicht ausprobiert, aber so müsste es funktionieren.

        Grüße aus http://www.braunschweig.de

        Tom

        1. Servus beisammen,

          Denn die andere Darstellung:

          Datensatz 1   Datensatz 2   Datensatz 3   Datensatz 4

          dürfte ja wohl keine Kopfschmerzen bereiten, oder?

          Aber ich fürchte genauso hat er es ursprünglich gemeint. Also die simple Lösung.

          if($res)
            for($Zeilen=0; $Zeilen<=mysql_num_rows($res); $Zeilen++){
              echo "<tr>";
              for($Spalten=0; $Spalten<=4; $Spalten++) {
                echo "<td>......</td>";
              }
              echo "</tr>";
            }
          }

          Das mal jetzt nur ganz kurz, knapp und schnörkellos für die Ausgabe. Aber SO habe ich die Frage verstanden. Vielleicht bekommen wir von Andreas aber nochmal Aufklärung, wie er es jetzt genau gemeint hat :-))

          Grüße aus http://www.braunschweig.de

          Schönen Gruß aus Trier  *g*

          1. Hallo miteinander!

            if($res)
              for($Zeilen=0; $Zeilen<=mysql_num_rows($res); $Zeilen++){
                echo "<tr>";
                for($Spalten=0; $Spalten<=4; $Spalten++) {
                  echo "<td>......</td>";
                }
                echo "</tr>";
              }
            }

            genau desterwegen mag ich PHP überhaupt nicht, das Erkennen der Funktionalität dieses Snippets dauert dank der unübersichtlichen Syntax zu lange.

            <ironisch>... aber wer da so masochistisch veranlagt ist, der soll es preisen ...</ironisch>

            vielleicht finde ichs auch gut, nachdem ich C# gefressen habe :-)

            Tschau, Frank

  2. Halo auch.

    Ich kenne mich mit PHP zwar gar nicht aus, aber Dein Problem ist eher ein grundlegendes...

    Du musst ein wenig mehr "Programm" um deine Leseroutine herumpacken.
    Und zwar kannst Du z.B. einen Zähler (von 1 beginnend) mitlaufen lassen. Immer wenn dieser durch vier geteilt 1 ergibt kannt Du nun die "alte" Zeile beenden und eine "neue" beginnen und den Zähler dann wieder auf 1 setzen......

    Oder schau mal in einer PHP Anleitung nach dem Modulo-Operator....

    Ich hoffe ich konnte Dir ein wenig helfen.

    Gruß,

    Holger