random pic - zufälliges Bild...bitte helfen
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
all
arve
banner
beitrag
bild
count
doubeln
error
extension
gen
internen startwert
manual
nerven
rhrer
schlu
skript
target
tutorial
variable
verzeichnis
-
Hi ich suche ein Tut wo beschrieben wie man es hinbekommt das bilder wechsel... ich hab schon a hier in Lima geschaut aber nat?rlich wie IMMER! funktioniert keines von denen auch nur ansatzwei?e!
plz help... -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
$dir = ""; // ordner der bilder ////// $odir = opendir($dir); $pictures = array(); while($file = readdir($odir)) { if(filetype($dir.$file) == "file") { $pictures[] = $dir.$file; } } $count = count($pictures)-1; $rand = rand(0,$count); echo($pictures[$rand]);
und als FUnktion:
function shuffle_image($dir) { $odir = opendir($dir); $pictures = array(); while($file = readdir($odir)) { if(filetype($dir.$file) == "file") { $pictures[] = $dir.$file; } } $count = count($pictures)-1; $rand = rand(0,$count); return $picture[$rand]; }
edit: hab es nicht getestet, also keine garantie, das es funktioniert!
edit2:
das verzeichnis muss mit einem naschlie?endem / (schr?gstrich) angegeben werden!
Beitrag ge?ndert am 26.12.2005 17:45 von ruehrer
Beitrag ge?ndert am 26.12.2005 17:45 von ruehrer -
Dazu brauchst du gar kein Tutorial...
Am leichtesten ist es, wenn du verschiedene Urls in ein Array schreibst:
$bannerurl[] = "banner1.jpg"; $bannerurl[] = "banner2.jpg"; $bannerurl[] = "banner3.jpg";
Dann erzeugst du eine Zufallszahl mit rand();. Als Begrenzungswert musst du count($bannerurl) nehmen.
Dein Skript sieht dann so aus:
$i = rand(0,count($bannerurl)-1); echo "<img src='".$bannerurl[$i]."'>";
edit: verdammt! - schon wieder zu langsam
mfg
Arve
Beitrag ge?ndert am 26.12.2005 18:46 von arve -
Hi,
ich weiss nicht, ob es irgendwo ein Tutorial gibt, ich zumindest keins gefunden (Es gint nur Scripts, aber ohne erk??rung des Codes).
Ich kann dir ja kurz erkl?ren:
$bilder = array( "bilder/bild1.jpg", "bilder/bild2.jpg", "bilder/bild3.jpg", "bilder/bild4.jpg" ); mt_srand((double)microtime() * 1000000); $rand = mt_rand(0,count($bilder)); if ( ! file_exists($bilder[$rand])) { die("Error: Das Bild '" . $bilder[$rand] ."' wurde nicht gefunden."); } $img_data = getimagesize($bilder[$rand]); echo "<img src=\"" . $bilder[$rand] . "\" " . $img_data[3] . ">";
Erkl?rung:
Im Array $bilder werden die Wege zu den Bilder angegeben.
Mit mt_srand() (http://www.php.net/manual/de/function.mt-srand.php) legt man einen internen Startwert f?r den Zufallszahlengenerator von mt_rand() fest.
In der Variable $rand wird die Zufallszahl von mt_rand() (http://www.php.net/manual/de/function.mt-rand.php) festgelegt. Dabei wird eine Zahl zwischen 0 und der l?nge des $bilder-Arrays erzeugt.
Mit if ( ! file_exists($bilder[$rand])) { wird noch ?berpr?ft, ob das durch Zufall gew?hlte Bild auch existiert. Falls es nicht existiert, wird das Script abgebrochen.
In $img_data wird die Gr?sse des Zufalls-Bild mit getimagesize() (http://www.php.net/manual/de/function.getimagesize.php) festgelegt.
Am Schluss wird mit echo der HTML-tag img im Dokumment angezeigt. Src ist glaube ich klar (weg zum Bild), und $img_data[3] ist volgendes: In der Variable wurden ja die daten des Bildes durch getimagesize() gespeichert. Es wird ein Array zur?ckgegeben. der 3 Wert im Array ist die HTML-Zeichenkette (Also "width="x" height="y"").
Alles klar?
Edit:
Du kannst auch mit folgender Funktion alle Bilder in einem Verzeichnis finden:
function findImg($dir) { if ($dir[strlen($dir) - 1] != "/") {$dir .= "/";} $ret = array(); $extensions = array("jpg","jpeg","gif","png"); // u.s.w. $dh = opendir($dir); while (($obj = readdir($dh)) !== false) { if ($object !== "." && $object !== "..") { if (is_file($obj)) { $ext = strtolower(end(explode(".",basename($obj)))); if ( in_array($ext,$extensions) ) { $ret[] = $obj; } } } } return $ret; } $bilder = findImg("./bilder/");
mfg,
hr
Beitrag ge?ndert am 26.12.2005 17:59 von heavyraptor -
heavyraptor schrieb:
Hi,
ich weiss nicht, ob es irgendwo ein Tutorial gibt, ich zumindest keins gefunden (Es gint nur Scripts, aber ohne erk??rung des Codes).
Ich kann dir ja kurz erkl?ren:
$bilder = array( 'bilder/bild1.jpg', 'bilder/bild2.jpg', 'bilder/bild3.jpg', 'bilder/bild4.jpg' ); mt_srand((double)microtime() * 1000000); $rand = mt_rand(0,count($bilder)); if ( ! file_exists($bilder[$rand])) { die('Error: Das Bild '' . $bilder[$rand] .'' wurde nicht gefunden.'); } $img_data = getimagesize($bilder[$rand]); echo '<img src=\'' . $bilder[$rand] . '\' ' . $img_data[3] . '>';
Erkl?rung:
Im Array $bilder werden die Wege zu den Bilder angegeben.
Mit mt_srand() (http://www.php.net/manual/de/function.mt-srand.php) legt man einen internen Startwert f?r den Zufallszahlengenerator von mt_rand() fest.
In der Variable $rand wird die Zufallszahl von mt_rand() (http://www.php.net/manual/de/function.mt-rand.php) festgelegt. Dabei wird eine Zahl zwischen 0 und der l?nge des $bilder-Arrays erzeugt.
Mit if ( ! file_exists($bilder[$rand])) { wird noch ?berpr?ft, ob das durch Zufall gew?hlte Bild auch existiert. Falls es nicht existiert, wird das Script abgebrochen.
In $img_data wird die Gr?sse des Zufalls-Bild mit getimagesize() (http://www.php.net/manual/de/function.getimagesize.php) festgelegt.
Am Schluss wird mit echo der HTML-tag img im Dokumment angezeigt. Src ist glaube ich klar (weg zum Bild), und $img_data[3] ist volgendes: In der Variable wurden ja die daten des Bildes durch getimagesize() gespeichert. Es wird ein Array zur?ckgegeben. der 3 Wert im Array ist die HTML-Zeichenkette (Also 'width='x' height='y'').
Alles klar?
mfg,
hr
Hab folgendes geschrieben:
<?
$bannerurl[] = "/images/1.jpg";
$bannerurl[] = "/images/2.jpg";
$i = rand(0,count($banner)-1);
echo "<img src='".$bannerurl[$i]."'>";
?>
Aber es wir dimmer ur das erste Bild angezeigt -
ganz einfach:
<?
$bannerurl[] = "/images/1.jpg";
$bannerurl[] = "/images/2.jpg";
$i = rand(0,count($bannerurl)-1);
echo "<img src='".$bannerurl[$i]."'>";
?>
du hast das fette vergessen ;) -
ruehrer schrieb:
ganz einfach:
<?
$bannerurl[] = '/images/1.jpg';
$bannerurl[] = '/images/2.jpg';
$i = rand(0,count($bannerurl)-1);
echo '<img src=''.$bannerurl[$i].''>';
?>
du hast das fette vergessen ;)
hast recht hab einfach kopiert und dann eingesetzt!
THX AN ALLE DIE MIR GEHOLFEN HABEN!
MfG Matze -
Wisst ihr auch wie man die Bilder noch unterschiedlich verlinken kann?
so das zum beispiel der abnner von Lima auch zu Lima verlinkt is und der von web.de zu web.de...
Wie gesagt bismjetzt siehts durch eure gerngesehene Hilfe so aus: ^^
<?
$bannerurl[] = "/images/1.jpg";
$bannerurl[] = "/images/2.jpg";
$i = rand(0,count($bannerurl)-1);
echo "<img src='".$bannerurl[$i]."'>";
?>
-
du kannst einfach noch ein zweites Array hinzuf?gen:
$links[] = "http://google.de/"; $links[] = "link2";
Dann ?nderst du das bisherige Skript einfach ab:
$bannerurl[] = "/images/1.jpg"; $bannerurl[] = "/images/2.jpg"; $i = rand(0,count($bannerurl)-1); echo "<a href='".$links[$i]."'><img src='".$bannerurl[$i]."'></a>";
und schon ist das kleine Rotationsskript fertig.
mfg
Arve
Beitrag ge?ndert am 26.12.2005 18:50 von arve -
arve schrieb:
du kannst einfach noch ein zweites Array hinzuf?gen:
$links[] = 'http://google.de/'; $links[] = 'link2';
Dann ?nderst du das bisherige Skript einfach ab:
$bannerurl[] = '/images/1.jpg'; $bannerurl[] = '/images/2.jpg'; $i = rand(0,count($bannerurl)-1); echo '<a href=''.$links[$i].''><img src=''.$bannerurl[$i].''></a>';
und schon ist das kleine Rotationsskript fertig.
mfg
Arve
Beitrag ge?ndert am 26.12.2005 18:50 von arve
JOa genau! THx nur noch eins dann nerv ich euch nicht mehr
Wie kann man das machen das es den lInk uin einem neuen Fenster ?ffnet? Ich habs mit target="_blank" nach dem href probiert geht aber net (...
plz letztes mal Help -
$links[] = 'http://google.de/'; $links[] = 'link2'; $bannerurl[] = '/images/1.jpg'; $bannerurl[] = '/images/2.jpg'; $i = rand(0,count($bannerurl)-1); echo '<a href="'.$links[$i].'" target="_blank"><img src="'.$bannerurl[$i].'"></a>';
so sollte es funtionieren, musst halt aufpassen, das des net zu dem link dazu reintust, sondern ert danach, aber och vor dem >
ich hab mal all eanf?hrungszeichen spo hingemacht, das diese dopellten nachher im HTML-Code zu sehen sind -
$links[] = 'http://google.de/'; $links[] = 'link2'; $bannerurl[] = '/images/1.jpg'; $bannerurl[] = '/images/2.jpg'; $i = rand(0,count($bannerurl)-1); echo '<a href="'.$links[$i].'" target="_blank"><img src="'.$bannerurl[$i].'"></a>';
so sollte es funtionieren, musst halt aufpassen, das des net zu dem link dazu reintust, sondern ert danach, aber och vor dem >
ich hab mal all eanf?hrungszeichen spo hingemacht, das diese dopellten nachher im HTML-Code zu sehen sind
so hab ichs ja aber so funktz das net
//->
Parse error: parse error, unexpected T_STRING, expecting ',' or ';' in /usr/export/www/hosting/ct2004/index.php on line 101
<?
$links[] = "http://www.dexgo.com/";
$links[] = "http://www.chronixradio.com/";
$bannerurl[] = "/images/1.jpg";
$bannerurl[] = "/images/2.jpg";
$i = rand(0,count($bannerurl)-1);
echo "<a href='".$links[$i]."' target="_blank"><img src='".$bannerurl[$i]."'></a>";
?>
Beitrag ge?ndert am 26.12.2005 19:17 von ct2004 -
Testdatei:
http://ruehrer.xardas.lima-city.de/test.php
dieser Code:
$links[] = 'http://google.de/'; $links[] = 'link2'; $bannerurl[] = '/images/1.jpg'; $bannerurl[] = '/images/2.jpg'; $i = rand(0,count($bannerurl)-1); echo '<a href="'.$links[$i].'" target="_blank"><img src="'.$bannerurl[$i].'"></a>';
gug dir dein script nochmal genau an! vielleich t hast du das ganze ja blos an die falsche stele gesetzt
edit: zu sp?t
Beitrag ge?ndert am 26.12.2005 19:22 von ruehrer -
ahhh jetzt! jetzt gehts ich wei? den fehler zwar net ich hab das jetzt einfach kopiert...
THX an alle... so das wars mit nerven ^^ -
Der Fehler lag in dem Vermischen von doppelten Anf?hrungszeichen (") mit einfachen Anf?hrungszeichen (').
Ich habe mir angew?hnt in Php doppelte und in Html einfache Anf?hrungszeichen zu verwenden.
Bei dir scheint es genau umgekehrt zu sein.
Ich hatte wie folgt begonnen: echo "";
Dann kam es zur Vermischung beim Einf?gen von target ="_blank".
H?ttest du target\"_blank\" eingef?gt, dann h?ttest du auch keine Fehlermeldung erhalten.
mfg
Arve -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage