Bilder auslesen und anzeigen

Luke85

Mitglied
Moin PHP'ler!

Habe ein PHP-Skript zusammengeschrieben, dass mir alle Bilder aus einem Ordner in ein DropDown-Menü hineinlädt.
Nach Auswahl soll nun das Bild ausgegeben werden. Leider funktioniert hier die Ausgabe an dieser Stelle nicht, obwohl der Link stimmt.
Hier mal der Code:

PHP:
<?php
$ordner = "bilder";
$verzeichnis = opendir($ordner);

 
	echo '<select name=\"bilder\">';
		while ($file = readdir ($verzeichnis)) 
		{
	     if($file != "." && $file != "..") 
			{
	         if(is_dir($ordner."/".$file)) 
				{
	             echo "/".$file."<br/>";
   		     	} 
				 	else 
					{
					 // kompletter Pfad
					 $compl = $ordner."/".$file;
					 //echo "<a href=\"".$compl."\">".$file."</a><br/>";
			         echo "<option value=\"".$compl."\">".$file."</option>";
					 }
			}
		}
	echo "</select>";

	
if(isset($file)) 
{
		while($file = readdir($verzeichnis))
		{
			$s = @getimagesize($ordner."/".$file);
				if(in_array($s[2], array(1,2,3)))
					$auswahl[] = $file;
		}
			$number = mt_rand(0,count($auswahl)-1);
			 if($file != "." && $file != "..") 
				{
				 // kompletter Pfad
				 $compl = $ordner."/".$file;
				 //echo "<a href=\"".$compl."\">".$file."</a><br/>";
				 echo "<option value=\"".$compl."\">".$file."</option>";
				}

	echo "<img src='".$ordner."/".$auswahl[$number]."'>";
}
?>

Wo hägt es denn. Fehlermeldungen gibt es keine.
 
Rück mal bitte den Code so ein, dass man ihn lesen kann.

Wenn du nicht mit Javascript arbeitest, dann weiß ich nicht, wie das Bild angezeigt werden soll? Im ersten While werden alle Bilder in die Dropdownliste geschrieben, aber ich sehen keinen Button zum Absenden?

Was bewirkt das 2. IF?
 
Was soll ich denn da zusammenrücken? Ist doch alles übersichtlich.
Die erste While-Schleife ist für das DDM, richtig. Die Zweite soll das Bild anzeigen.
Beiden Schleifen funktionieren unabhängig sehr gut, Javascript beißt sich auch nicht mit PHP. Das Ganze zu verbinden ist mein Problem. Ein Button ist auch nicht notwendig.
Es liegt ein Screenshot als Anlage bei zur besseren Vorstellung bei.
 

Anhänge

  • Bild.JPG
    Bild.JPG
    5,8 KB · Aufrufe: 45
hmm... Also entweder fehlt ein Teil deines Quellcodes oder du musst deine Strategie noch einmal überdenken.

Da steht ja kein JS, nur PHP. Da PHP serverseitig arbeitet brauchst du also mindestens noch einen Submit-Button, der deine Auswahl an den Server zurück schickt...
 
Mir ist schon klar, dass PHP serverseitig funktioniert. Doch ich hole nichts aus einer DB. Und recht hast du, JS ist auch nicht vorhanden. Das Skript greift auf den Ordner "bilder" zu und lädt von dort aus die Bilder in das DDM. Das 2te Skript sollte eigentlich die Auswahl ausgeben und anzeigen, tut es aber nicht...
 
Tut mir leid, ich versteh es nicht... Wie soll das Skript denn etwas von einer Auswahl wissen?
Außerdem willst du ein Option-Element schreiben, obwohl du den Select-Tag schon geschlossen hast (und einige deiner Anführungszeichen sind überflüssig Escaped).

Du willst, dass eine Liste mit Bildern geladen wird. Und wenn man eins aus der Liste auswählt, soll dieses Bild angezeigt werden? Per Javascript oder PHP?
 
Zuletzt bearbeitet:
Was bedeutet denn PHP-tauglich? :confused:

Am einfachsten wäre es per Javascript:
PHP:
<?php
$ordner = "bilder";
$verzeichnis = opendir($ordner);

echo '<select name="bilder" id="bilder" onchange="document.getElementById(\'bild\').src = this.value; document.getElementById(\'bild\').style.visibility = \'visible\';">'; 
        while ($file = readdir ($verzeichnis)) 
        {
        	
         if($file != "." && $file != "..") 
            {
             if(is_dir($ordner."/".$file)) 
                {
                 echo "/".$file."<br/>";
                    } 
                     else 
                    {
                     // kompletter Pfad
                     $compl = $ordner."/".$file;
                     //echo "<a href=\"".$compl."\">".$file."</a><br/>";
                     echo "<option value=\"".$compl."\">".$file."</option>";
                     }
            }
        }
    echo "</select>";

echo '<img src="" id="bild" style="visibility: hidden;">';

?>

Wenn es nur PHP sein soll, dann musst du erstmal einen Mechanismus zum Absenden der Informationen einbauen (Formular) und das dann entsprechend auswerten. Die zweite Schleife ist aber im Grunde überflüssig.
 
Was soll ich denn da zusammenrücken? Ist doch alles übersichtlich.

Nein. Die zusammengehörigen Klammerpaare sind nicht untereinander und der Code innerhalbt eines Klammerpaares ebenso wenig. Das erschwert das Lesen und die Fehlersuche.

Die erste While-Schleife ist für das DDM, richtig. Die Zweite soll das Bild anzeigen.
Beiden Schleifen funktionieren unabhängig sehr gut, Javascript beißt sich auch nicht mit PHP.

Nur mal zum Grundverständnis: Du musst abfragen, ob die Daten aus der Dropdown-Liste übergeben wurden um aufgrund dieser Daten das richtige Bild anzuzeigen. Dazu fehlt die entweder ein submit-Button oder aber ein Javascript-Eventhandler á la OnChange.

PHP:
if(isset($file))

.. macht gar keinen Sinn. Wenn schon, dann bitte

PHP:
if(isset($_POST['bilder']))

Das erneute auslesen des gesamten Verzeichnisses in der 2. Schleife macht ebenfalls keinen Sinn, da du den Namen des Bildes ja mittels deiner Liste übergibst.

Übrigens habe ich auch nirgendwo gesagt, dass sich PHP mit Javascipt beißt, aber in deinem Code steht de facto kein Javascript ;)
 
Der Code sieht aus wie nach einem Krieg. Wer hat denn da wen bekämpft?
Die unteren Reihen hatten anscheinend Angst und sind nach rechts gelaufen.

Das Nachladen des Bilder php wird nicht funktionieren, da php nur zu einem
Zeitpunkt geladen wird, und man nachdem die Seite geladen ist nicht einfach
Inhalt wie ein Bild austauschen kann.

Man kann nur alle vorher laden und dann per Javascript austauschen, oder
per Ajax nachladen. In jedem anderen Fall muß man die Seite komplett
neu laden, ansonsten hat php keinen Zugriff auf das nächste Bild, was
ausgewählt werden soll.
 
Zurück