Zufallsbild Bildgröße ermitteln schlägt fehl!

-Ener-

Erfahrenes Mitglied
Also im folgenden Script wird aus den Unterordnern des Ordners "Ordner" ein Zufallsbild geladen und ausgegeben, nun möchte ich die popup Funktion mit den Originalgrößen des Bildes füttern damit es immer im richtig skalieren Fenster angezeigt wird nur leider funktioniert meine $size-Abfrage nicht so, das Popup bleibt klitzeklein...

PHP:
<?php
$root = 'Ordner';
$root2 = '';
$od = opendir($root);
$dir_arr = array();
$files = array('jpg','gif');
while($obj = readdir($od)){
if(!preg_match('/^\.{1,2}$/',$obj) && is_dir($root.'/'.$obj)){
$dir_arr[] = $obj;
}
else
{
continue;
}
}
closedir($od);
$number = array_rand($dir_arr);
$path = $root.'/'.$dir_arr[$number];
$path2 = $dir_arr[$number];
$od = opendir($path);
$file_arr = array();
while($obj = readdir($od)){
if(!preg_match('/^\.{1,2}$/',$obj) && is_file($path.'/'.$obj) && in_array(strtolower(substr($obj,strrpos($obj,'.')+1)),$files)){
$file_arr[] = $obj;
}
else
{
continue;
}
}
$number = array_rand($file_arr);
$size = getimagesize("%s/%s");
printf('
<script type="text/javascript">
function popup() {
bild =
window.open("popup_pic.php?src=Ordner/%s&file=%s", "bild", "width=$size[0],height=$size[1]");
bild.focus();
}
</script>',$path2,$file_arr[$number],$file_arr[$number],$file_arr[$number]);
printf('<td width="146" height="110" background="random.php?pic=%s/%s"  bgcolor="FFCEE4" border="0"/>',$path,$file_arr[$number],$file_arr[$number],$file_arr[$number]);
printf('<a href="javascript:popup()" onmouseover="status=\'\';return true;" onclick="status=\'\';return true;"><img src="Bilder/rahmen2.gif" width="146" height="110" border="0" alt="">',$path2,$file_arr[$number],$file_arr[$number],$file_arr[$number]);
print('</a></td>');
?>

Wäre für jede Hilfe dankbar!
 
Öhm ja. Du musst die Funktion getimagesize() ja auch richtig verwenden.
Es gibt bestimmt kein Bild, welches %s/%s heißt.

Im Übrigen kannst du dir auch den ganzen continue-Käse auch sparen. ;)
 
Öhm ja. Wie soll man bitte Variablen mit %s übergeben?! Das was du vielleicht im Hinterkopf hast, ist die Funktionsweise von sprintf() und ähnlichem.
getimagesize() setzt schon eine richtige Adresse voraus.

Bzgl. continue: Enterne die ganzen else-Blöcke mit dem continue. Das braucht man einfach nicht. Die Schleife wiederholt sich schon ohne fremdes Zutun. ;)
 
Wüsstest du wie ich das denn sonst mache? kann ich das ganze Script so umschreiben das ich im print nicht dieses %s/%s benutzen muss? Das Script ist nicht von mir, deßhalb...
 
PHP:
<?php
$root = 'Ordner';
$root2 = '';
$od = opendir($root);
$dir_arr = array();
$files = array('jpg','gif');
while($obj = readdir($od)){
if(!preg_match('/^\.{1,2}$/',$obj) && is_dir($root.'/'.$obj)){
$dir_arr[] = $obj;
}
}
closedir($od);
$number = array_rand($dir_arr);
$path = $root.'/'.$dir_arr[$number];
$path2 = $dir_arr[$number];
$od = opendir($path);
$file_arr = array();
while($obj = readdir($od)){
if(!preg_match('/^\.{1,2}$/',$obj) && is_file($path.'/'.$obj) && in_array(strtolower(substr($obj,strrpos($obj,'.')+1)),$files)){
$file_arr[] = $obj;
}

}
$number = array_rand($file_arr);
$size = getimagesize($path.$file_arr[$number]);
printf('
<script type="text/javascript">
function popup() {
bild =
window.open("popup_pic.php?src=Ordner/%s&file=%s", "bild", "width=$size[0],height=$size[1]");
bild.focus();
}
</script>',$path2,$file_arr[$number],$file_arr[$number],$file_arr[$number]);
printf('<td width="146" height="110" background="random.php?pic=%s/%s"  bgcolor="FFCEE4" border="0"/>',$path,$file_arr[$number],$file_arr[$number],$file_arr[$number]);
printf('<a href="javascript:popup()" onmouseover="status=\'\';return true;" onclick="status=\'\';return true;"><img src="Bilder/rahmen2.gif" width="146" height="110" border="0" alt="">',$path2,$file_arr[$number],$file_arr[$number],$file_arr[$number]);
print('</a></td>');
?>

Soltle eigentlich so funktionieren.
 
Zurück