Bilder aus Ordner rotierend nach Zufall anzeigen

rernanded

Erfahrenes Mitglied
Hallo,
habe folgendes Script das die Bilder aus einem Ordner alle anzeigt.
Ich möchte nun das Script so gestalten, daß die Bilder bei jedem Neuladen in immer wieder anderer Reihenfolge angezeigt werden. Ich denke mal rand() ist eine Option und vorher müssen die Bilder ev. in ein array???

MONI

PHP:
<?php
       $verzeichnis = "bilder/";
       $handle = openDir($verzeichnis);
       while ($datei = readDir($handle)) {
       if ($datei != "." && $datei != ".." && !is_dir($datei)) {
       if (strstr($datei, ".gif") || strstr($datei, ".png") || strstr($datei, ".jpg")) {
         $verzeichnis_datei = $verzeichnis . $datei;
         echo "<img id=\"top_img\" src=\"$verzeichnis_datei\" width=\"333px\" height=\"200px\">&nbsp;&nbsp;&nbsp;";
         }
         }
           }
             closeDir($handle);
       ?>
 
Eine Lösung kann ich dir nicht nennen, nur ein paar Tipps.

Einige PHP-Gallerien, die ich kenne, benutzen für random-image die RSS-Feed Funktion.
Vielleicht solltest du dir mal so eine Gallerie-Software, oder auch nur Plugin downloaden und den PHP-Code ansehen.

Andere Möglichkeit bestünde darin, die Zufallsgeneration per ID der database-table zu gestalten und von der ID aus den Dateinamen/pfad aus der database-table auszulesen.
Also in MySql irgendwas mit
PHP:
SELECT id FROM table ORDER BY RAND() LIMIT 1
und dann eben weiter. Aber da bin ich jetzt selbst überfragt.
 
Glücklicherweise hat PHP eine shuffle-Funktion, mit der man ein Array in eine zufällige Reihenfolge bringen kann. Mit glob() kannst Du die Bilder direkt in ein Array einlesen und dann mit shuffle() mischen.
 
@Sempervivum: Danke Dir, hab mal folgendes versucht aber es werden keine Bilder angezeigt. Allerdings die richtige Zahl an Platzhaltern und alt=\"wow\". MONI

PHP:
<?php
       $verzeichnis = "bilder/";
       $handle = openDir($verzeichnis);
       while ($datei = readDir($handle)) {
       if ($datei != "." && $datei != ".." && !is_dir($datei)) {
       if (strstr($datei, ".gif") || strstr($datei, ".png") || strstr($datei, ".jpg")) {
         $verzeichnis_datei = $verzeichnis . $datei;
    
$all_files = glob("$verzeichnis_datei");

$my_array = array("$all_files");

shuffle($my_array);

foreach ($my_array as $file) {
echo "<img id=\"top_img\" src=\"$file[0]\" width=\"333px\" height=\"200px\" alt=\"wow\">&nbsp;&nbsp;&nbsp;";
}

         }
         }
           }
             closeDir($handle);
       ?>
 
Zuletzt bearbeitet:
Du musst in deiner Variablen $verzeichnis auch den Dateinamen der Bilder angeben. So funktioniert es:
PHP:
    $pfad = "bilder/{*.jpg,*.png, *.gif}";
    $imgarray = glob($pfad, GLOB_BRACE);
    shuffle($imgarray);
    foreach ($imgarray as $file) {
        echo '<img class="top_img" src="' . $file . '" width="333px" height="200px" alt="wow">&nbsp;&nbsp;&nbsp;';
    }
Du kannst nicht mehreren Bildern die selbe ID geben. Deshalb habe ich es auf class geändert.
 

Neue Beiträge

Zurück