Geschrieben von diegeodaeten am 16.01.2006, 23:07

Es gibt schon ein Tut, welches zufällig Bilder anzeigt. Dieses hat meiner Meinung nach den Nachteil, das alle Bilder in einem Array hinterlegt werden müssen.

Einfacher und vor allem praktischer ist es, wenn man einen Ordner definiert in dem die Bilder liegen, die zufällig angezeigt werden soll, und aus diesem ein Bild automatisch genommen wird.

Die Vorgehensweise ist recht simple. Wir lesen alle Dateien aus unserem Ordner in ein Array ein. Lassen uns von einer PHP-Methode einen Zufallswert geben, der zwischen Null und der Länge des Arrays liegt und geben das Bild, das hinter diesem Index hinterlegt ist aus.

Zunächst bestimmen wir das Feld für die Bilder und eine Variabel, die später den Zufallswert erhalten soll. Darüberhinaus hinterlegen wir den Ordner, indem sich die Bilder befinden, in einer Variable:


$randomvalue = 0;
$randompicture = array();
$picturedir = "bilder";

Das einlesen der Bilder aus dem Ordner ist recht simple. Zunächst prüfen wir, ob der Ordner sich öffnen lässt mit opendir(). Ist dies möglich, wird das gesamte Verzeichnis gelistet (readdir()) und (bis auf unerwünschte Dateien zB index.html) in unser Array durch eine Schleife eingelesen. Sind alle Bilder/Dateien eingelesen, schließen wir den Ordner wieder mittels closedir().


$k=0;
if ($picDir=opendir ($picturedir)){
while ($file = readdir ($picDir)) {
if ($file != "." && $file != ".." && $file != "index.html" ){
$randompicture[$k] = $file;
$k++;
}
}
closedir($picDir);
}

Sind alle Bilder im Array vorhanden, wird mit hilfe der Methode mt_rand() eine Zufallszahl ermittelt. Dieser Wert muss der Anzahl der Elemente im Array entsprechen. Die Länge des Feldes kann dabei mit count() bestimmt werden. Da ein Feld jedoch als ersten Index eine Null hat, ist der letzte Index um eins kleiner als die Länge, die uns count() liefert. Diesen Mißstand beheben wir mit mathematischem Sachverstand -- wir ziehen eins ab -- und weisen den Wert unserer Variablen zu...

$randomvalue = mt_rand(0, count($randompicture)-1);

Als Ergebnis benötigen wir noch eine Ausgabe des Zufallsbildes. Hier muss lediglich das Feld mit dem Zufallswert zusammengeführt werden:

echo "<img src=\"./".$picturedir."/".$randompicture[$randomvalue]."\">\n";

Fertig. Das ganze Script sieht somit wie folgt aus:


$randomvalue = 0;
$randompicture = array();
$picturedir = "bilder";
$k=0;
if ($picDir=opendir ($picturedir)){
while ($file = readdir ($picDir)) {
if ($file != "." && $file != ".." && $file != "index.html" ){
$randompicture[$k] = $file;
$k++;
}
}
closedir($picDir);
$randomvalue = mt_rand(0, count($randompicture)-1);
echo "<img src=\"./".$picturedir."/".$randompicture[$randomvalue]."\">\n";
}

Anzumerken wäre vielleich noch, das mit Hilfe von myimagesize() die Abmaße des Bildes ausgelesen werden sollten, auch sollte auf einen aussagekräftigen Text im ALT_Attribut des IMG-Tags nicht verzichtet werden.

Bewertung Anzahl
6
100,0 %
11 Bewertungen