Seite 2 von 5

Verfasst: 17.09.2006 16:55
von Andavos
Es sind nur Bilder in den Verzeichnissen, keine anderen Dateien, es kommt praktisch nie zu änderungen!

Re: Zufallsbilder

Verfasst: 17.09.2006 17:45
von Xwitz
Wenn auch die Bilder in den Verzeichnissen gleich bleiben, dann sollte man die vielleicht nicht jedes mal auslesen, das verbraucht unnötig Ressourcen.

Ansonsten:
Ich habe da mal was geschreiben, es hat auch funktioniert, aber die Anpassungen auf die Schnelle hier sind ungetestet:
EDIT: Die Verzeichnisse ($averz) fehlen noch, die müssen wenn der Bildername in das array $bilder geschrieben wird mit eingefügt werden und die Variablennamen müssen noch angepaßt werden ($datei zu $file oder umgekehrt).
/EDIT

suche

Code: Alles auswählen

$verzeichnis = dir($ordner); 
         $bilder = array(); 
         while($datei = $verzeichnis->read())
ersetze mit

Code: Alles auswählen

$bilder = array();
$verz = opendir($ordner);
while($uverz = readdir($verz))
{ 
if($file != "." && $uverz != ".." &&  is_dir($uverz)) 
{
$averz = opendir($uverz); 
while($file = readdir($averz)) 
{ 
if($file != "." && $file != "..") 
suche

Code: Alles auswählen

$verzeichnis->close();
ersetze mit

Code: Alles auswählen

}} 
closedir($averz);
}}
closedir($verz);

Verfasst: 18.09.2006 13:25
von Andavos
Vielen Dank, aber ich kapiere jetzt nicht so ganz, was ich wo reinschreiben muss!

Verfasst: 18.09.2006 15:35
von Xwitz
Suchen und Ersetzen? Du sollst das auf deinen Code anwenden. :roll:

Code: Alles auswählen

<?php 
			//Welcher Ordner wird ausgelesen? 
			$ordner = "Upload/uploading/"; 
			
			//Welche Bildendungen sollen erkannt werden? 
			$endungen = array("gif","jpg","jpeg","png","bmp"); 
			
			
			/****** Bilder auslesen ******/ 
			$bilder = array(); 
$verz = opendir($ordner); 
while($uverz = readdir($verz)) 
{ 
if($datei != "." && $uverz != ".." &&  is_dir($uverz)) 
{ 
$averz = opendir($uverz); 
while($datei = readdir($averz)) 
{ 
if($datei != "." && $datei != "..") 
			   { 
			   $datei_endung = substr( strrchr($datei,".") ,1); 
			
			   //Ist die Datei-Endung in dem Array vorhanden? 
			   if(in_array($datei_endung,$endungen)) 
				  { 
				  $datei = $uverz."/".$datei; 
				  $bilder[] = $datei; 
				  } 
			   } 
			} 
closedir($averz); 
}} 
closedir($verz); 
			
			//Zufälliges Bild wählen 
			srand ((double) microtime() * 10000000);
			$key = array_rand($bilder); 
			
			//Bild ausgeben: 
			echo "<img src=\"Upload/uploading/".$bilder[$key]."\">"; 
			?> 
Das ist aber immer noch ungetestet.

Edit: Code korrigiert

Verfasst: 19.09.2006 17:50
von Andavos
Ansonsten:
Ich habe da mal was geschreiben, es hat auch funktioniert, aber die Anpassungen auf die Schnelle hier sind ungetestet:
EDIT: Die Verzeichnisse ($averz) fehlen noch, die müssen wenn der Bildername in das array $bilder geschrieben wird mit eingefügt werden und die Variablennamen müssen noch angepaßt werden ($datei zu $file oder umgekehrt).
Aber was bedeutet das?

Verfasst: 19.09.2006 18:04
von Xwitz
Das bedeutet, daß bei den Dateinamen die in dem Array stehen die Information fehlt, in welchem Verzeichnis sie liegen und das alle Variablennamen $file in den Variablennamen $datei geändert werden müssen oder umgekehrt (was egal ist).

Das ist in dem Code den ich zuletzt gepostet habe aber alles schon drin wie unschwer zu erkennen wäre.

Verfasst: 20.09.2006 16:46
von Andavos
Es kommt folgende Fehlermeldung:
Warning: closedir(): 24 is not a valid Directory resource in /home/www/web176/html/Projekt-Fake/index.php on line 554

Warning: closedir(): 24 is not a valid Directory resource in /home/www/web176/html/Projekt-Fake/index.php on line 554

Warning: closedir(): 24 is not a valid Directory resource in /home/www/web176/html/Projekt-Fake/index.php on line 554

Warning: closedir(): 24 is not a valid Directory resource in /home/www/web176/html/Projekt-Fake/index.php on line 554

Warning: closedir(): 24 is not a valid Directory resource in /home/www/web176/html/Projekt-Fake/index.php on line 554

Warning: closedir(): 24 is not a valid Directory resource in /home/www/web176/html/Projekt-Fake/index.php on line 554

Warning: closedir(): 24 is not a valid Directory resource in /home/www/web176/html/Projekt-Fake/index.php on line 554

Warning: closedir(): 24 is not a valid Directory resource in /home/www/web176/html/Projekt-Fake/index.php on line 554

Warning: closedir(): 24 is not a valid Directory resource in /home/www/web176/html/Projekt-Fake/index.php on line 554

Warning: closedir(): 24 is not a valid Directory resource in /home/www/web176/html/Projekt-Fake/index.php on line 554

Warning: closedir(): 24 is not a valid Directory resource in /home/www/web176/html/Projekt-Fake/index.php on line 554

Warning: closedir(): 24 is not a valid Directory resource in /home/www/web176/html/Projekt-Fake/index.php on line 554

Warning: closedir(): 24 is not a valid Directory resource in /home/www/web176/html/Projekt-Fake/index.php on line 554

Warning: closedir(): 24 is not a valid Directory resource in /home/www/web176/html/Projekt-Fake/index.php on line 554

Verfasst: 20.09.2006 21:35
von Xwitz
Unmittelbar vor folgendem code

Code: Alles auswählen

closedir($averz); 
}} 
closedir($verz); 
ist eine schließende geschweifte Klammer "}" zu viel (das habe ich oben geändert). Die Klammer löschen (oder obigen korrigierten Code übernehmen) und noch mal probieren.

Verfasst: 21.09.2006 18:38
von Andavos
Die habe ich schon lange weg genommen, aber es geht immer noch nicht, die gleiche Meldung!

Verfasst: 21.09.2006 21:08
von Xwitz

Code: Alles auswählen

<?php 

$verz = opendir("."); 
while($uverz = readdir($verz)) 
{ 
if($datei != "." && $uverz != ".." &&  is_dir($uverz)) 
{ 
$averz = opendir($uverz); 
while($datei = readdir($averz)) 
{ 
if($datei != "." && $datei != "..") 
            { 
            
              
              $datei = $uverz."/".$datei; 
              echo $datei."<br>"; 
              
            } 
         } 
closedir($averz); 
}} 
closedir($verz); 
          
         
         ?>
Das funktioniert bei mir. Wenn nicht das

Code: Alles auswählen

opendir(".")
den Unterschied macht, dann liegt der Fehler nicht in meinem Code.

Edit: Es liegt vermutlich daran. Ich habe den code in einer Datei getestet, die in dem Verzeichnis lag und nicht woanders.

Entweder Du legst die Datei auch in das Verzeichnis oder versuche mal folgendes.
Suchen (im ungekürzten Code):

Code: Alles auswählen

$averz = opendir($uverz); 
Ersetzen durch:

Code: Alles auswählen

$averz = opendir($ordner."/".$uverz); 
Ich kann es jetzt nicht testen.

PS: Wenn man schon einen Fehler ausgegeben bekommt, dann sollte man auch den Code der Zeile angeben, das vereinfacht die Fehlersuche.