PHP: Random-Image-Script funktioniert nicht?!

Shiivva

Erfahrenes Mitglied
Irgendwie wird folgendes Script nicht so durchgeführt, wie es soll?!
Das "Problem" ist, dass die Bilder nicht angezeigt werden, sondern
die Dateinamen einfach nur ausgeschrieben werden:
hier der Beispiellink: http://www.shiivva.de/random

Und hier das Script:

<?php

// print a random image. Don't forget ending slash!
// setting $type to 'all' will return all images.

print getRandomImage('../images/');

function getRandomImage($dir,$type='random')
{
global $errors;

if (is_dir($dir)) {

$fd = opendir($dir);
$images = array();

while (($part = @readdir($fd)) == true) {

clearstatcache();

if ( eregi("(gif|jpg|png|jpeg)$",$part) ) {
$images[] = $part;
}
}

// adding this in case you want to return the image array
if ($type == 'all') { return $images; }

// Be sure to call srand() once per script
srand ((double) microtime() * 1000000);
$key = rand (0,sizeof($images)-1);

return $dir . $images[$key];

} else {
$errors[] = $dir.' is not a directory';
return false;
}
}

?>

Was ist das Problem? Oder funktioniert das Script einfach nur "mal wieder" bei Puretec nicht?
 
ähm...

irgendwie ist das sehr umständlich...

ich habe mal für eine meiner hp per random via php ein backgroundpic ausgegeben...

dafür hab ich einfach ein random auf die anzahl der vorhanden pics gemacht (zb 10)

die bilder hatten alle den selben namen, bis auf die nummer am schluss. (zb testpic1.jpg bis testpic10.jpg)

an der stelle im html code wo das image eingefügt wird hab ich dann das img tag überarbeitet...

schaut wie folgt aus:

php (eine zeile):

$num_random=rand(10);

html (img tag ändern):

<img src="testpic<? echo $num_random; ?>.jpg" border="....>

-------------------

das wars, mehr war nicht notwendig.
wenn du die anzahl der pics variabel gestalten möchtest, würde ich einfach vorm random die anzahl der dateien die in dem ordner für die bckgroundpics liegen, auslesen...

wenn man zb auch per http pics uploaden können soll, dann einfach einen fixen file-namen beim upload bestimmen und die nummer um 1 erhöhen...

--------------------
neue idee: :)

wenn man beliebige pics uploaden und löschen können soll, ohne sich um irgendwelche dateinamen zu kümmern, würd ich einfach alle dateien-namen aus dem ordner nacheinander einlesen und in ein array speichern. dann bestimmt man die anzahl der felder des arrays macht ein rand drauf und gibt dann den dateinamen der per rand bestimmt worden ist im html code aus...

falls sowieso ne andere problemstellung existiert dann gib mir bescheid!!!

grüße...
 
Wo ist der HTML-code ?!?!??!?!?!?!

Hast du schon mal daran gedacht überhaubt irgendwo html in dein Seite einzubauen....
Deine Funktion getRandomImage() gibt ja nur den Pfad zurück , was man an dem Link und dem Quelltext der Seite auch sieht.
probier mal sowas hier:

<img src="<? print getRandomImage('../images/');?>">

Woher soll der Browser den sonst wissen das er das Bild aus dem Verzeichnis laden soll das du "nur" ausgiebst.

Tob
 
Zuletzt bearbeitet:
manchmal bin ich auch einfach zuuuu doof

Danke! Jetzt funktionierts...

Gibt es eigentlich ne Möglichkeit, den Ordner absolut, also über http anzugeben?
Einfach

<img src="<? print getRandomImage('http://www.shiivva.de/images/');>">

funktioniert ja nicht...
 
so !

also ich hab das so gemacht !

<?
$directory = "splash/";
$handle = opendir($directory);
while ($file = readdir ($handle))
{if ($file != "." && $file != "..")
{$filecount++;}}
srand((double)microtime()*1000000); $zufall = rand(1,16);
?>

dann kommt dein html dokument

und da kannste das dann zb so einbauen der generiert dir dann immer eine zahl von 1 - 16 du kannst auch ne andere zahl als höchste angeben

<img src="splash/splash<? echo $zufall ?>.jpg" width="340" height="300" border="0">


force2k1
 
das Zufallsscript an sich funktioniert ja...aber ich wüsste zugern, ob es ne Möglichkeit gibt, mit absoluten Pfaden zu arbeiten.

Das Problem ist nämlich, dass ich das Script nicht für eine "Splash"-Site brauche, sondern wollte es für diverse Header-Bilder auf einer Seite (mit vielen Unterseiten/Unterordnern) haben...

Und dann funktioniert das mit den relativen Pfaden ja nicht mehr.
 
Du must mal deinen Webspaceanbieter fragen der kann die wahrscheinlich so was als absoluten Pfad anbieten:

/kunden/deinanbieter.com/webseiten/deinrootverzeichnis

oder sowas ähnliches


tob
 

Neue Beiträge

Zurück