|
Bildergalerie
von Wolfgang
Arnberger
Im Rahmen eines Projektes mußte ich mehrere Bilder
nebeneinander darstellen. Unter jedem Bild sollte ein Text
eingeblendet werden.

Die Informationen, welche Bilder angezeigt werden sollen,
kommen aus einer mySQL Tabelle. Die Struktur ist denkbar einfach:
| ID |
bild |
text |
| 1 |
1.jpg |
Text 1 |
| 2 |
2.jpg |
Text 2 |
| 3 |
3.jpg |
Text 3 |
| 4 |
4.jpg |
Text 4 |
| 5 |
5.jpg |
Text 5 |
| 6 |
6.jpg |
Text 6 |
Das Herzstück ist die Funktion query_into_array(). Diese
Funktion holt die Daten aus der Tabelle und schreibt sie in
ein zweidimensonales Array. Dabei enthält die erste Dimension
den Datensatz während die zweite Dimension ein assoziatives
Array mit den einzelnen Feldern enthält.
<? function query_into_array($query){ settype($retval,"array"); $result= mysql_query($query); $y=mysql_num_rows($result); $k=mysql_num_fields($result); for($i=0;$i<$y;$i++){ for($j=0;$j<$k;$j++){ $retval[$i][mysql_field_name($result,$j)] = mysql_result($result,$i,mysql_field_name($result,$j)); } } return $retval; } ?>
Nachdem die Daten nun in einem Array vorliegen, besteht der
ganze Trick darin, die einzelnen Werte in die entsprechenden
Zellen einer HTML-Tabelle zu schreiben:
<? // Daten in ein Array schreiben $erg=query_into_array("select * from galerie");
// Anzahl der Bilder ermitteln $y=count($erg); ?>
<TABLE width="760" cellspacing="0"> <? for ($x=0;$x<$y;$x+=5) {?> <TR> <TD width="20%"> <? if($erg[$x][bild]) {?> <IMG src="<? echo "pics/".$erg[$x][bild] ?>"> <? } ?> </TD> <TD width="20%"> <? if($erg[$x+1][bild]) {?> <IMG src="<? echo "pics/".$erg[$x+1][bild] ?>"> <? } ?> </TD> <TD width="20%"> <? if($erg[$x+2][bild]) {?> <IMG src="<? echo "pics/".$erg[$x+2][bild] ?>"> <? } ?> </TD> <TD width="20%"> <? if($erg[$x+3][bild]) {?> <IMG src="<? echo "pics/".$erg[$x+3][bild] ?>"> <? } ?> </TD> <TD width="20%"> <? if($erg[$x+4][bild]) {?> <IMG src="<? echo "pics/".$erg[$x+4][bild] ?>"> <? } ?> </TD> </TR> <TR> <TD width="20%"> <? echo $erg[$x][text] ?> </TD> <TD width="20%"> <? echo $erg[$x+1][text] ?> </TD> <TD width="20%"> <? echo $erg[$x+2][text] ?> </TD> <TD width="20%"> <? echo $erg[$x+3][text] ?> </TD> <TD width="20%"> <? echo $erg[$x+4][text] ?> </TD> </TR> <? } ?> </TABLE>
In der Zeile
<? for ($x=0;$x<$y;$x+=5) ?>
geben Sie im letzten Parameter an, wie viele Bilder
pro Tabellenzeile angezeigt werden sollen. Da Sie in jeder
Tabellenspalte einen anderen Datensatz anzeigen, geben Sie
über den Wert $x+.. den gewünschten Datensatz an.
Die zweite Dimension des Array enhält die einzelnen Felder
und läßt sich über den Spaltennamen ansprechen.
|