rotate.php in verschiedenen divs soll verschiedene zufällig ausgewählte Bilder laden

culinara

Grünschnabel
Hallo,

ich möchte gerne in 9 verschiedenen divs 9 verschiedene Bilder (Anzahl 6) zufällig laden.
Bis jetzt habe ich das rotate.php von dieser Seite http://www.alistapart.com/articles/randomizer
eingebaut. Die Bilder in den 9 divs laden nun auch, aber sie laden immer das gleiche zufällig ausgewählte Bild. Ich würde aber gerne in jeder div box ein anderes zufällig ausgewähltes haben.

Leider kann ich kein PHP. Was muss ich ändern?

Die php Datei binde ich in der index.html wie folgt ein:

<div id="tangrambox">
<img src="http://localhost:8888/tangram/image/rotate.php">
</div>


Das ist der php-Code von der alistapart Seite:


$img = null;

if (substr($folder,-1) != '/') {
$folder = $folder.'/';
}

if (isset($_GET['img'])) {
$imageInfo = pathinfo($_GET['img']);
if (
isset( $extList[ strtolower( $imageInfo['extension'] ) ] ) &&
file_exists( $folder.$imageInfo['basename'] )
) {
$img = $folder.$imageInfo['basename'];
}
} else {
$fileList = array();
$handle = opendir($folder);
while ( false !== ( $file = readdir($handle) ) ) {
$file_info = pathinfo($file);
if (
isset( $extList[ strtolower( $file_info['extension'] ) ] )
) {
$fileList[] = $file;
}
}
closedir($handle);

if (count($fileList) > 0) {
$imageNumber = time() % count($fileList);
$img = $folder.$fileList[$imageNumber];
}
}

if ($img!=null) {
$imageInfo = pathinfo($img);
$contentType = 'Content-type: '.$extList[ $imageInfo['extension'] ];
header ($contentType);
readfile($img);
} else {
if ( function_exists('imagecreate') ) {
header ("Content-type: image/png");
$im = @imagecreate (100, 100)
or die ("Cannot initialize new GD image stream");
$background_color = imagecolorallocate ($im, 255, 255, 255);
$text_color = imagecolorallocate ($im, 0,0,0);
imagestring ($im, 2, 5, 5, "IMAGE ERROR", $text_color);
imagepng ($im);
imagedestroy($im);
}
}

?>
 
PHP:
$imageNumber = time() % count($fileList);
$img = $folder.$fileList[$imageNumber];

Wenn du 9 Bilder musst du auch 9 auswählen.

$img2 = .....
$img3 =....

oder gleich einen Array verwenden.
Außerdem gibt es besser Methoden um Elemente "zufällig" aus einem Array auszuwählen als die obere.
Siehe :
http://php.net/manual/de/function.array-rand.php
 
hey, danke für die schnelle antwort!

also dann so?

$imageNumber = time() % count($fileList);
$img = $folder.$fileList[$imageNumber];
$img2 = $folder.$fileList[$imageNumber];
$img3 = $folder.$fileList[$imageNumber];
$img4 = $folder.$fileList[$imageNumber];
$img5 = $folder.$fileList[$imageNumber];
$img6 = $folder.$fileList[$imageNumber];
$img7 = $folder.$fileList[$imageNumber];
$img8 = $folder.$fileList[$imageNumber];
$img9 = $folder.$fileList[$imageNumber];

dann werden immer noch dieselben zufällig ausgesuchten Bilder gezeigt...
oder muss ich noch was anderes dazu ändern?

mit dem array hört sich gut an, aber an welcher stelle fügt man dann welchen code ein oder ist das dann was komplett anderes?
 
hallo,
so würde es _theoretisch_ gehen, wenn du soviele Variablen anlegen willst.

Das in deinem Code alle Bilder die selben sind ist klar, da $imageNumber ja auch nur 1 mal berechnet wird. D.h du musst auch noch 9 verschiedene Keys berechnen.
$imageNumber_1 = mt_rand() % count($fileList);
...........
 
ok, habe es so geändert, aber dann wird nichts mehr angezeigt, wahrscheinlich ist noch irgendwas drin, was so nicht stimmt?

if (count($fileList) > 0) {
$imageNumber = time() % count($fileList);
$imageNumber_1 = mt_rand() % count($fileList);
$imageNumber_2 = mt_rand() % count($fileList);
$imageNumber_3 = mt_rand() % count($fileList);
$imageNumber_4 = mt_rand() % count($fileList);
$imageNumber_5 = mt_rand() % count($fileList);
$imageNumber_6 = mt_rand() % count($fileList);
$imageNumber_7 = mt_rand() % count($fileList);
$imageNumber_8 = mt_rand() % count($fileList);
$imageNumber_9 = mt_rand() % count($fileList);
$img = $folder.$fileList[$imageNumber];
$img2 = $folder.$fileList[$imageNumber];
$img3 = $folder.$fileList[$imageNumber];
$img4 = $folder.$fileList[$imageNumber];
$img5 = $folder.$fileList[$imageNumber];
$img6 = $folder.$fileList[$imageNumber];
$img7 = $folder.$fileList[$imageNumber];
$img8 = $folder.$fileList[$imageNumber];
$img9 = $folder.$fileList[$imageNumber];
 
Zuerst schreibst du $imageNumber_1, $imageNumber_2, ..., $imageNumber_9 und dann nimmst du aber immer $imageNumber.
 
mhm, also du meinst so? oder noch anders?
kommt wieder kein bild...

if (count($fileList) > 0) {
$imageNumber = time() % count($fileList);
$imageNumber_1 = mt_rand() % count($fileList);
$imageNumber_2 = mt_rand() % count($fileList);
$imageNumber_3 = mt_rand() % count($fileList);
$imageNumber_4 = mt_rand() % count($fileList);
$imageNumber_5 = mt_rand() % count($fileList);
$imageNumber_6 = mt_rand() % count($fileList);
$imageNumber_7 = mt_rand() % count($fileList);
$imageNumber_8 = mt_rand() % count($fileList);
$imageNumber_9 = mt_rand() % count($fileList);
$img = $folder.$fileList[$imageNumber_1];
$img2 = $folder.$fileList[$imageNumber_2];
$img3 = $folder.$fileList[$imageNumber_3];
$img4 = $folder.$fileList[$imageNumber_4];
$img5 = $folder.$fileList[$imageNumber_5];
$img6 = $folder.$fileList[$imageNumber_6];
$img7 = $folder.$fileList[$imageNumber_7];
$img8 = $folder.$fileList[$imageNumber_8];
$img9 = $folder.$fileList[$imageNumber_9];
}
 
Lass dir mal die Werte von $img, $img2, $img3, ... $img9 mittels echo am Bildschirm ausgeben oder schau dir den Quelltext der Seite an.

Ich vermute mal das der Dateipfad und/oder der Dateiname falsch gebildet/zusammengesetzt werden.
 
Zurück