Zufallsbild aus Verzeichnis

Sandro18

Erfahrenes Mitglied
Hi Leute,
habe das Problem das ich aus einem Verzeichnis voller Bilder ein Zufallsbild ausgeben will. Ich lese das Verzeichnis wie folgt aus:

PHP:
<?
$i=0;

$unterstrich = "_";
$pfad="galerie/$galerie->shootdate$unterstrich$galerie->clubname/vorschau/";
$verz=opendir ($pfad);
while ($file=readdir($verz))
{
    if (filetype($pfad.$file)!="dir")
    {
$i++;
?><img src="<? echo $pfad; ?><? echo $file; ?>" border="0" align="left"><? } } closedir($verz); ?>

Mit der Variablen $file kann ich nun also alle Namen ausgeben die in diesem Verzeichnis vorhanden sind. ABER wie stelle ich das an das er ein Zufallsbild auswählt? Ich dachte an rand() hab dies auch versucht, aber wusste nicht wie ich es einzusetzen habe. In den verschiedensten Varianten hat es leider nicht geklappt. Hoffe Ihr könnt mir helfen.

Gruß Sandro
 
Hallo,
lese die Bilder doch einfach in ein Array.
Dann kannst du mit rand() eine Zufallszahl generieren und
dein Zufallsbild ausgeben lassen. Ungefähr so:
PHP:
<?php
    $bilder = array();
    $pfad = '.';
    $dir = opendir($pfad);
    while ($bild = readdir($dir)){
        if ($bild != "." && $bild != ".."){
            $bilder[] = $bild;
        }
    }
    closedir($dir);
    $max = count($bilder)-1;
    $zufall = rand(0,$max);
    echo '<img src="'.$pfad.'/'.$bilder[$zufall].'">';
?>

mfg
forsterm
 
Hi,

die Idee klingt nicht schlecht, jedoch haben die Bilder keine Namen die Nummern sind, sondern sie sind immer wieder mal anderst, abhängig von der DigiCam z.B.
esce0786.jpg

Gruß Sandro
 
Ich würde sagen so hier:
PHP:
<?

srand(microtime()*10000000);
$rand = rand(1,12);

$url1 = 'http://';
$url2 = 'http://';
$url3 = 'http://';
$url4 = 'http://';
$url5 = 'http://';
$url6 = 'http://';
$url7 = 'http://';
$url8 = 'http://';
$url9 = 'http://';
$url10 = 'http://';
$url11 = 'http://';
$url12 = 'http://';

$urls = array(1=>"$url1",
              2=>"$url2",
              3=>"$url3",
              4=>"$url4",
              5=>"$url5",
			  6=>"$url6",
              7=>"$url7",
              8=>"$url8",
              9=>"$url9",
              10=>"$url10",
			  11=>"$url11",
			  12=>"$url12");
			  
$pic1 = 'gallerie/1.jpg';
$pic2 = 'gallerie/2.jpg';
$pic3 = 'gallerie/3.jpg';
$pic4 = 'gallerie/4.jpg';
$pic5 = 'gallerie/5.jpg';
$pic11 = 'gallerie/11.jpg';
$pic12 = 'gallerie/12.jpg';
$pic6 = 'gallerie/6.jpg';
$pic7 = 'gallerie/7.jpg';
$pic8 = 'gallerie/8.jpg';
$pic9 = 'gallerie/9.jpg';
$pic10 = 'gallerie/10.jpg';


$pics = array(1=>"$pic1",
              2=>"$pic2",
              3=>"$pic3",
              4=>"$pic4",
              5=>"$pic5",
			  6=>"$pic6",
              7=>"$pic7",
              8=>"$pic8",
              9=>"$pic9",
              10=>"$pic10",
              11=>"$pic11",
              12=>"$pic12");
			  
			  echo "<center><font size='2'>Zufallsbild:</font></center>";
echo '<a href="?file=bilder.php&img='.$pics[$rand].'"><img border="0" src="'.$pics[$rand].'" width="200" \></a>';
?>
Die biler kannst du nach lust und laune eintragen auch mit anderen Namen.
Du kannst das ganze auch mit MySql machen dann sparst du dir ein großen Teil von dem Code!
 
Zuletzt bearbeitet:
Naja gut ok, danke für die Hilfe, ich dachte vielleicht würde es einfachere Varianten geben, aber dann komm ich wohl nicht drum rum ;o)

schönen Tag euch noch ..

Gruß Sandro
 
Also die Version von forsterm sollte perfekt für dich funktionieren, da die Dateinamen relativ egal sind.
Das Script liest einfach alle n in das Array $bilder[]... Angefangen bei $bilder['0'] bis $bilder[n]...

Wenn das erste Bild im Verzeichnis also bla.jpg wäre, hätte $bilder[0] den Wert "bla.jpg"...
 
Zurück