Ordner auflisten funktioniert nicht

Prophet05

Erfahrenes Mitglied
Warum Funktioniert diese Script nicht vernünftig?

PHP:
<?php
 	function dirs_listen($ordner)
 	{
 		$dir = opendir($ordner);
 		$i = 0;
 		while($file = readdir($dir))
 		{
 			if($file != '.' && $file != '..')
 			{
 				if(is_file($file))
 				{
 		    		echo "<li>[FILE] <a href=\"$file\" target=\"haupt\">$file</a></li>\n";
 				}
 				elseif(is_dir($file))
 				{
 		    		echo "<li>[DIR] $file</li>\n";
 					echo "<ul>";
 					dirs_listen($ordner.$file."/");
 					echo "</ul>";
 				}
 				$i += 1;
 			}
 		}
 		closedir($dir);
 	}
 	
 	dirs_listen('./');
 ?>

Ich möchte damit alle Dateien und Unterordner (und ihren Inhalt) auflisten. Beim aktuellen Ordner geht das auch aber sobald er einen Unterordner aufruft schreibt er dort entweder gar keine Dateien oder nur die Dateien des Ursprungsordners rein. Ich weiß nicht weiter ich verzweifle noch daran...

MfG Prophet
 
Ich hab grad mal zum testen hinter closedir() folgendes gesetzt:
PHP:
echo $i."\n";
Daran ist dann irgendwie interessant, dass die richtige Anzahl an Dateien ausgegeben wird, aber pro Unterverzeichnis nur eine Datei.

Ich glaub ich weiss woran's liegt.
Mal eben testen...
 
So, hier die Loesung:
PHP:
<?php
     function dirs_listen($ordner)
     {
         $dir = opendir($ordner);
         $i = 0;
         while($file = readdir($dir))
         {
             if($file != '.' && $file != '..')
             {
                 if(is_file($ordner.$file))
                 {
                     echo "<li>[FILE] <a href=\"$ordner$file\" target=\"haupt\">$file</a></li>\n";
                 }
                 elseif(is_dir($ordner.$file))
                 {
                     echo "<li>[DIR] $file</li>\n";
                     echo "<ul>";
                     dirs_listen($ordner.$file."/");
                     echo "</ul>";
                 }
                 $i += 1;
             }
         }
         closedir($dir);
     }
     dirs_listen('./');
 ?>
Du hast bei den Abfragen ob der gefundene Eintrag eine Datei oder ein Verzeichnis ist vergessen $order mit anzugeben.
Daher wird immer nur im aktuellen Ordner nach der Datei geprueft.

Nachtrag: Hab grad noch den Link angepasst, damit die Dateien auch am richtigen Ort verlinkt werden.
 
Zuletzt bearbeitet:
Zurück