Ik heb 't zelfde
Wij hebben 't fotoalbum overgenomen van een van de scoutgroepen hier (scoutsboekhoute). Zij hebben ook een (ander?) random foto scriptje. Mss willen zij het je ook wel geven...
De subdirs gaan ook maar 3 niveau's diep en daar is het voor geschreven. Twee niveaus lukt dus niet. Beperkt scriptje dus, 'k zou nu wel iets beter kunnen schrijven maar 't is duidelijk dat dit niet zo moeilijk is...
Het voordeel hier is ook (tegenover de methode hierboven voorgesteld) is dat het écht random is. Terwijl hierboven subdirs met weinig foto's en subdirs met veel foto's evenveel aangeroepen werden, worden hier subdirs aangeroepen al naargelang hoeveel foto's ze bevatten. Als je snapt wat ik bedoel...
Misschien omslachtig, ik heb geen idee, ik was al blij dat het na veel vijven en zessen toch werkte...
Code:
$takken=array('kapoenen' => '01_Kapoenen','welkas' => '02_Welpen en Kabouters','jonggivers' => '03_Jonggivers','givers' => '04_Givers','jins' => '05_Jins','leiding' => '06_Leiding'); // Ook dit is een omzetting van de takvariables van 't fotoalbum naar de 'standaard' takvariables die onze site gebruikt...
$takvol=$takken[$tak];
if (basename($_SERVER["PHP_SELF"])=="index.php") { // Dit is om ook foto's per tak te kunnen tonen
$dir = "fotoalbum/album";
$dh = opendir($dir);
while ($file = readdir($dh))
{
if ($file != '.' && $file != '..')
{
if (is_dir($dir."/".$file))
{
$dh2=opendir($dir."/".$file);
while ($file2 = readdir($dh2))
{
if ($file2 != '.' && $file2 != '..')
{
$results[] = $dir."/".$file."/".$file2;
$dh3=opendir($dir."/".$file."/".$file2);
$dirsize=0;
while ($file3 = readdir($dh3))
{
$dirsize++;
}
$dir_size[$dir."/".$file."/".$file2]=$dirsize;
}
}
}
}
}
}
else {
$dir = "fotoalbum/album/".$takvol;
$dh2=opendir($dir."/".$file);
while ($file2 = readdir($dh2))
{
if ($file2 != '.' && $file2 != '..')
{
$results[] = $dir."/".$file."/".$file2;
$dh3=opendir($dir."/".$file."/".$file2);
$dirsize=0;
while ($file3 = readdir($dh3))
{
$dirsize++;
}
$dir_size[$dir."/".$file."/".$file2]=$dirsize;
}
}
}
foreach ($dir_size as $key => $temp)
{
$totaalfoto += $temp;
if (!isset($foto_dir)) $foto_dir=$key;
if ($totaalfoto != 0 && ($totaalfoto == 1 || rand(1, $totaalfoto) <= $temp)) {
$foto_dir=$key;
}
}
$thumbstring = '';
//$foto_dir=$results[rand(0, sizeof($results) -1)];
$fotodir=opendir($foto_dir);
while ($foto=readdir($fotodir))
{
if ($foto != "." && $foto != "..")
{
$thumbstring[] = $foto;
}
}
srand((double)microtime()*1000000);
$fotonum=rand(0, sizeof($thumbstring) -1);
echo "<a href=\"#\" onclick=\"Popup=window.open('fotoalbum/foto_lezen.php?dir=".substr($foto_dir,10)."&nummerafbeelding=".($fotonum)."','_blank','toolbar=no, location=no,status=no,menubar=no,scrollbars=yes,resizable=yes,width=550,height=680,left=100,top=100'); return false;\"><img class=\"scaled\" src=\"".$foto_dir."/".$thumbstring[$fotonum]."\" style=\"border:none\" alt=\"random foto\"></img></a>";
?>
Het wijst zich (denk ik) wel uit. Bij problemen vraag je 't maar...