Randombild-Script

tacef

Mitglied
Hallo

Ich hab ein kleines "Problem".

Ich bin gerade dabei, das letzte Script für meine Seite zu schreiben. Ein Picture of the Moment Bild.

Ich hab imo eines, das zwar bei jedem Refresh das Bild wechselt, allerdings nur, wenn der Name der Datei eine Ziffer ist also 1.jpg.

PHP:
<?php 
$max=1; //Anzahl der vorhandenen Bilder 
$end="jpg"; //Endung der Datei
$ver="media/"; //Bilderverzeichniss 

$z=array(); 
$c=0; 

// Fünf Bilder raussuchen, nicht doppelt 
while ($c<1) 
{ 
mt_srand((double)microtime()*1000000); 
$rnd=mt_rand(1,$max); 
if (!isset($z[$rnd])) { $z[$rnd]=1; $c++; } 
} 

// Anzeige der Bilder 
$c=0; 
for ($i=1; $i<($max+1); $i++) 
{ 
if (isset($z[$i])) { echo "<a href=\"javascript:void(0);\" onclick=\"window.open('$ver$i.$end', 'window".md5(microtime())."', 'toolbars=0, scrollbars=0, location=0, statusbars=0, menubars=0, resizable=1, width=".$w.", height=".$h.", left = 20, top = 20');\"><img src=\"$ver$i.$end\" width=\"100\" height=\"75\" border=\"0\" alt=\"Picture of the Moment\"></a>"; $c++;} 
if ($c==1) { $c++;} 
} 
?>

Jetzt will ich nicht jedes Bild doppelt speichern und somit Speicherplatz verschwenden. Daher hab ich versucht, ein Script zu schreiben, das Bildernamen auslest, in ein Array schreibt und dann ausgibt.

PHP:
<?php


$handle=opendir ("./");

echo "Verzeichnisinhalt:<br>";

if ($datei = readdir ($handle)) { 
  $Bild[] = $datei
   srand ((double)microtime()*10000);
       $maxwert = count($Bild)-1;
       $nr = rand(0,$maxwert);
       echo("<img src=\"$bild\"/>");

}
closedir($handle);

?>

Leider bin ich nicht viel weiter als hiergekommen. Er zeigt mir kein Bild an sondern nur eine 0 als Dateinamen. Was mach ich falsch?

Dange im voraus.
 
Hi,

PHP:
<?php


$handle=opendir ("./");

echo "Verzeichnisinhalt:<br>";

if ($datei = readdir ($handle)) { 
  $Bild[] = $datei
   srand ((double)microtime()*10000);
       $maxwert = count($Bild)-1;
       $nr = rand(0,$maxwert);
       echo("<img src=\"$bild\"/>");

}
closedir($handle);

?>

Poste doch bitte den Code, mit dem Du es wirklich probiert hast (das ist ein sinnvoller Einsatz von Copy&Paste). Der Schnippsel geht ja nichtmal durch den Parser...

Du baust kein Array mit allen Dateinamen auf, Du liest ja nur einen einzigen Dateinamen ein. Die Variable $bild definierst Du gar nicht erst.

LG
 
@ kuddeldaddeldu

Ich hab das teil aus meiner Datei rauskopiert. Ka warum das nicht geparst wird.

@ZodiacXP

Wie soll ich das den besser beschreiben?:p
Danke erstmal für die Links, werd mir die morgen mal zu gemüte führen.
 
So ich habs mir jetzt mal angeschaut, hab schon rumprobiert komm aba nich wirklich auch nen grünen Zweig.

PHP:
<?php

function alpharead3($dir){
if(!$dir){$dir = '.';}
foreach(glob("$dir/*") as $item){$sort[]= end(explode('/',$item));}

$killit = array('index.html', 'index.php', 'thumbs.db', 'styles.css');
$killcounter = 0;
foreach($sort as $sorteditem){
foreach($killit as $killcheck){
if(strtolower($sorteditem) == strtolower($killcheck))
{unset($sort[$killcounter]);}
}$killcounter++;}
if($sort){natsort($sort);}
foreach($sort as $item){$return[]= $item;}

if(!$return){return array();}
return $return;
}

//some basic usage

$folder = './';
foreach(alpharead3($folder) as $item)
{
	foreach (glob("*.jpg") as $item) {
	echo ("<a href=\"".$folder.$item."\"><img src=\"".$folder."t_".$item."\"></br>");
	}
}

?>

Damit werden werden zwar nur jpg datein ausgelesen, allerdings nicht so wie ich es gerne hätte. Könte mir vielleicht wer noch einen genaueren Hinweis geben?

Danke im voraus.
 
Damit werden werden zwar nur jpg datein ausgelesen, allerdings nicht so wie ich es gerne hätte.

:confused:

Es sind zwar nur {hier Substantiv einsetzen}, allerdings mag ich die nicht. :)

Naja. Also sicherlich sind es "nur" .jpg:
PHP:
foreach (glob("*.jpg") as $item) {

Das kann man aber erweitern:
http://de.php.net/glob
http://de.wikipedia.org/wiki/Regulärer_Ausdruck
PHP:
foreach (glob("*.jpg|gif|bmp") as $item) {

Und was ist dein Ziel? Hast gesagt, dass es nicht deinen Vorstellungen entspricht, aber nicht wie es seien sollte.
 
Genauere Erläuterung:

Ich verwende Ausschließlich JPG Dateien bei den Bildern. Ich meinte die Anzeigeart.

Ich will, das bei jedem Refresh der Seite ein anderes Bild angezeigt wird. Das ursprüngliche Script verhält sich so, allerdings muss der Dateiname eine Zahl sein.

Wie muss ich das umbauen, das er die Dateinamen verwendet mit Buchstaben anstelle Zahl.
 
Ich hab den zweizeiler schon versucht, entweder verwende ich ihn falsch oder hab nen Denkfehler.

PHP:
<?php
$dir ="./";
$directory = opendir($dir);
$a = readdir($directory);
$a = glob("*.jpg");
$a = array_rand($a, 5); // Bsp. für 5 Bilder  
echo("<img src=\"$a\"/>");
?>

Und das ist meine Grafikadresse:

http://localhost/nom2/media/Array

Bin echt schon ein bissel am verzweifeln.
 
Hi,

Du solltest schon erstmal im Handbuch nachlesen, bevor Du Funktionen verwendest, die Dir nicht bekannt sind...

[phpf]array_rand[/phpf]
Return Values

If you are picking only one entry, array_rand() returns the key for a random entry.

Es sind auch Beispiele aufgeführt, wie man das benutzen kann...

Was treibst Du da ausserdem noch mit opendir() und readdir()?

LG
 
Zurück