PHP&MySQL] Datenausgabe begrenzen

Moritz123

Erfahrenes Mitglied
Hallo,

ich habe eine kleine Galerie programmiert, die sich den Pfad für Bilder aus der Datenbank holt und die Bilder dann auf der Seite so darstellt:
PHP:
<td width="6%" align="center">
<a href="galerie.php?action=detail&id=<?php print $row->id; ?>" target="zeige" onClick="window.open('','zeige','height=400, width=500, scrollbars=yes, resizeable=yes')">
<img src="<?php print $bild;?>" <?php print $info[3]; ?> border="0"></td>

Nun will ich diese Ausgabe eingrenzen, dass zB immer nur 3 Bilder
pro Zeile dargestellt werden und dann mit </tr><tr> eine neue Zeile
begonnen wird, in der dann wieder 3 Bilder dargestellt werden, usw.

Wie bekomme ich sowas hin?

Vielen Dank!
 
das ist mein (stark vereinfachtes) script einer gallerie, vielleicht kannst damit was anfangen.

PHP:
$i = 0;

// dateinamen des bildes aus der datenbank holen
$daten_1 = mysql_query("SELECT * FROM table ORDER by id");

// tabelle mit 450 pixel breite
echo"<table width=\"450\" border=\"0\"><tr>";

while ($daten = mysql_fetch_array($daten_1))
{

// eine spalte 150 pixel breit und ein bild drin
echo"<td width=\"150\"><img src=\"./dein/pfad/$daten[bild]\"></td>";


// die 3 bedeutet, dass er 3 spalten pro zeile macht, dann eine zeile weiter springt

    if ( !( ( $i + 1 ) % 3) )


                {echo "</tr><tr><td></td><td></td><td></td><td></td></tr><tr>";}


    $i++;

}
echo"</table>";
 
Hallo!

vielen Dank erst mal dafür!

Ich verstehe leider nur Bahnhof. Gibt es evtl ne einfachere Variante?
Wenn nicht, könntest Du mir das Ganze noch mal etwas näher erläutern?
Wäre echt nett.

Gruß
 
naja, eigentlich stehen die erklärungen doch schon dran. also nochmal.
ich adde die dateinamen der bilder in eine tabelle der datenbank, und lade sie via php upload auf den ftp server. dann muss ich ja nurnoch den dateinamen aus der tabelle holen, der pfad zu den bildern ist ja immer gleich. So, das wäre also die erste Zeile meines scripts.
Da die Bilder ja nicht untereinander, sondern meinetwegen immer 3 in einer Reihe sein sollen, muss man das ja irgendwie mit ner tabelle lösen, hast ja selber schon erkannt. Also erzeug ich erstmal den Tabellenkopf wenn mans so will. Das ist die nächste Zeile.
PHP:
echo"<table width=\"450\" border=\"0\"><tr>";
Der "Inhalt" der Tabelle, also die Zeilen und Spalten, muss ja dynamisch sein.
mit
PHP:
while ($daten = mysql_fetch_array($daten_1))
{
starte ich eine schleife, die eben jedes einzelne Bild aus der tabelle der datenbank holt.

mit
PHP:
echo"<td width=\"150\"><img src=\"./dein/pfad/$daten[bild]\"></td>";

if ( !( ( $i + 1 ) % 3) )
          {echo "</tr><tr><td></td><td></td><td></td><td></td></tr><tr>";}

 $i++;
werden nun solange spalten der ersten zeile erzeugt, bis $i einen wert hat der teilbar durch 3 ist. Wenn du "5" einträgst, werden eben 5 spalten erzeugt, dann hast 5 bilder in einer reihe. Erst danach wird eine neue Zeile angefangen, und das ganze zeugs beginnt von vorne.

Am schluss wird der "statische" teil der tabelle eben noch ausgegeben, die tabelle wird halt zu gemacht.
hoffe nu isses klarer, ansonsten kannst ja fragen.
 
{echo "</tr><tr><td></td><td></td><td></td><td></td></tr><tr>";}
Ok, das war verständlich. Vielen Dank.
Die einzige Unklarheit ist jetzt noch die Zeile oben. Warum werden da dann nochmal 2 Zeilen aufgemacht? Hast Du das einfach gemacht, oder hat das einen tieferen Sinn?
 
ja du hast recht, war vielleicht etwas verwirrend. es reicht auch wenn du die zeile so schreibst
PHP:
{echo "</tr><tr>";}
Du schliesst sozusagen die erste zeile, und öffnest eine neue, wenn 3 bilder schon angezeigt werden.
ich hab das halt für mein script gemacht, damit ich ein paar abstände rein bekomm.
 

Neue Beiträge

Zurück