Zufallsbilder

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Andavos
Mitglied
Beiträge: 145
Registriert: 13.07.2006 11:50
Wohnort: Winterthur

Beitrag von Andavos »

Es sind nur Bilder in den Verzeichnissen, keine anderen Dateien, es kommt praktisch nie zu änderungen!
Xwitz
Mitglied
Beiträge: 1104
Registriert: 21.06.2005 21:41

Re: Zufallsbilder

Beitrag 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);
Andavos
Mitglied
Beiträge: 145
Registriert: 13.07.2006 11:50
Wohnort: Winterthur

Beitrag von Andavos »

Vielen Dank, aber ich kapiere jetzt nicht so ganz, was ich wo reinschreiben muss!
Xwitz
Mitglied
Beiträge: 1104
Registriert: 21.06.2005 21:41

Beitrag 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
Zuletzt geändert von Xwitz am 20.09.2006 21:36, insgesamt 1-mal geändert.
Andavos
Mitglied
Beiträge: 145
Registriert: 13.07.2006 11:50
Wohnort: Winterthur

Beitrag 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?
Xwitz
Mitglied
Beiträge: 1104
Registriert: 21.06.2005 21:41

Beitrag 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.
Andavos
Mitglied
Beiträge: 145
Registriert: 13.07.2006 11:50
Wohnort: Winterthur

Beitrag 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
Xwitz
Mitglied
Beiträge: 1104
Registriert: 21.06.2005 21:41

Beitrag 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.
Andavos
Mitglied
Beiträge: 145
Registriert: 13.07.2006 11:50
Wohnort: Winterthur

Beitrag von Andavos »

Die habe ich schon lange weg genommen, aber es geht immer noch nicht, die gleiche Meldung!
Xwitz
Mitglied
Beiträge: 1104
Registriert: 21.06.2005 21:41

Beitrag 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.
Antworten

Zurück zu „Coding & Technik“