Geschrieben von korbiw am 25.10.2004, 04:53

<?php
/* Hier erkläre ich, wie man Bilder, die in einer Datenbank gespeichert sind auf einer Seite
Am besten kopierst du dir das gesammte Tutorial in einen php Editor dann wird das ganze übersichtlicher.
ausgibt und zwar in einer Tabelle mit 3 Spalten, so dass das erste Bild in der
ersten Zeile - ersten Spalte ist, das zweite in der ersten Zeile - zweite Spalte
usw. dass es ungefähr so ausschaut:

Bild 1 | Bild 2 | Bild 3
-------------------------
Bild 4 | Bild 5 | Bild 6
-------------------------
Bild 7 | Bild 8 | Bild 9

Ich gehe davon aus dass in der Datenbank eine Tabelle names "tabelle" existiert
und in dieser in den Zellen namens "dateiname" die bilder gespeichert sind (zB:
bild.jpg).
Als erstens müssen wir die Daten aus der Tabelle auslesen: */

$verbindung = mysql_connect("host","name","passwort");
mysql_select_db("datenbank");
$abfrage = "SELECT * FROM tabelle";
$ergebnis = mysql_query($abfrage);

/*Jetzt kommt ein bisschen Mathematik. Das schwierige an
der Sache ist, dass das script für jedes Bild entscheiden soll, ob es in die
Zelle links-aussen, mitte, oder rechts-aussen kommt. Dazu habe ich eine if Anweisung und eine
Variable namens $bilderzahl verwendet.
benutzt. Jedesmal wenn ein Bild aus der Datenbank ausgelesen wird, zählt die Variable um eins hoch.
dh. Beim 1. Bild hat sie den Wert 1, beim 2. den Wert 2 ...
Die Bilder sollen ja so in die Tabelle eingefügt werden:

Bild 1 | Bild 2 | Bild 3
-------------------------
Bild 4 | Bild 5 | Bild 6
-------------------------
Bild 7 | Bild 8 | Bild 9

Was bringt aber die Variable`?
Ich hoffe ich kann es einigermaßen verständlich machen:

Jede Zelle in der 3. Spalte ist durch 3 Teilbar ( Wen man die Zellen von links nach rechts und oben nach unten durchnummeriert):
3, 6, 9, 12 ...
Das heißt wenn die Vaiable $bilderzahl durch 3 Teilbar ist kommt das Bild in die dritte spalte also muss der code für die Zelle: <td></td></tr> lauten, wir befinden uns ja am Ende der Zeile und müssen die Zeile abschließen

Jede Zelle in der 2. Spalte ist nichtdurch 3 Teilbar:
2, 5, 8, 11, ...
Aber jede Zelle+1 ist durch 3 Teilbar
2+1=3, 5+1=6 ...
Das heißt wenn die Vaiable $bilderzahl+1 durch 3 Teilbar ist kommt das Bild in die zweite spalte also muss der code für die Zelle: <td></td> lauten, wir befinden uns ja in der Mitte der Zeile.

Jede Zelle in der 1. Spalte ist nichtdurch 3 Teilbar:
1, 4, 7, 10, ...
Aber jede Zelle+2 ist durch 3 Teilbar
1+2=3, 4+2=6 ...
Das heißt wenn die Vaiable $bilderzahl+2 durch 3 Teilbar ist kommt das Bild in die erste spalte also muss der code für die Zelle: <tr><td></td> lauten, wir befinden uns ja in am Anfang der Zeile und müssen sie mit <tr> eröffnen.

ob die Variable durch 3 Teilbar ist über prüfe mit Hilfe der Funktion floor() die den Wert zw. den Klammern abrundet, dh. den Rest "entfernt"
Wenn also die Zahl durch 3 Teilbar ist $bilderzahl/3 gleich floor($bilderzahl/3)

*/

$bildnummer = 1;
echo "<table width=\"100%\" border=\"1\">"
while ($bild = mysql_fetch_object($ergebnis))
{
$bildnummer++;
if (($bildnummer+2) / 3 == floor($bildnummer2 / 3))
{
echo "<tr><td><img src=\"", $bild->dateiname ,"\"></td>";
}
elseif (($bildnummer + 1) / 3 == floor(($bildnummer + 1) / 3))
{
echo "<td><img src=\"", $bild->dateiname ,"\"></td>";
}
elseif ($bildnummer / 3 == floor($bildnummer / 3))
{
echo "<td><img src=\"", $bild->dateiname ,"\"></td></tr>";
}
}
/* Jetzt müssen wir nur noch schauen wie viele leere Zellen wir noch hinschreiben müssen
Dazu schauen wir uns die entgültige Bilderzahl an: */
if (($bildnummer + 2) / 3 == floor(($bildnummer + 2) / 3))
{
echo "<td></td><td></td></tr>";
}
elseif (($bildnummer + 1) / 3 == floor(($bildnummer + 1) / 3)) {
echo "<td></td></tr>";
}
/* Und zum Schluss noch den Tag zum Tabelle abschließen */
echo "</table>";

/*Fertig */
?>

Bewertung Anzahl
6
100,0 %
4 Bewertungen