Ordnerstruktur komplett ausgeben

quidnovi

Erfahrenes Mitglied
Hi @ all,

hab' nun schon google bemüht aber nicht das richtige gefunden.

Mit folgendem Code versuche ich eine Ordnerstruktur auszugeben:
PHP:
if ($handle = opendir('./test')){
		while (false !== ($file = readdir($handle))) {
			if($file !== '.' && $file !== '..') {
		       echo "<a href='".$file."'>
		             ".$file."</a><br>\n";
	   		}
		}
		closedir($handle);
 	}

Damit erhalte ich zwar die Unterordner von "test": Ordner1, Ordner2,... nur haben diese Unterordner wieder ihre Unterordner, diese ich ja auch ausgeben will.

Sollte dann so aussehen:
Test
- Unterordner1
- 1. Unterordner von 1
- 2. Unterordner von 1
...
- Unterordner 2
- Unterordner 3
- 1. Unterordner von 3
- 2. Unterordner von 3

Habe (wahrscheinlich auch in Anbetracht der späten Stunde) keine Idee, wie ich das einfach umsetzen kann.

Könnt Ihr mir bitte einen Schubs in die richtige Richtung geben?

Danke schonmal
 
Ausführliche Antwort:
PHP:
function get_dir($par_dir, $ebene){
    if ($handle = opendir($par_dir)){
        while (false != ($file = readdir($handle))) {
            if($file != '.' && $file != '..') {
                if(is_dir($par_dir."/".$file)){
                    echo $ebene."<b>".$file."</b><br>\n";                    
                    get_dir($par_dir."/".$file , $ebene."&nbsp;&nbsp;&nbsp;");
                }else            
                    echo $ebene."<a href='".$file."'>".$file."</a><br>\n";
            }
        }
        closedir($handle);
    } 
}

get_dir("C:\\Dokumente und Einstellungen\\All Users\\Dokumente", "")

Die Funktion ruft sich so lange auf bis die letzte Ordnerebene erreicht worden ist.
 
Schönen guten Morgen,

danke für Deine Hilfe.

Funktioniert ja spitze!

Nochmals vielen Dank.
 
Zuletzt bearbeitet:
Hi,

versuche nun das Ganze so zu lösen:
PHP:
if ($handle = opendir('./ordner')){
				while (false !== ($file = readdir($handle))) {
					//for ($i =0; $i < 100; $i++){
					if($file !== '.' && $file !== '..') {
						echo "<a href='./index.php?showDir=".$file."'><img src='./images/plus.gif' border='0'> </a>";
    						 "<a href='./index.php?openDir=".$file."'><img src='./images/ordner.gif' border='0'> </a>".
							 "<a href='./mkDir.php?newDir=".$file."'><img src='./images/n.gif' border='0'> </a>".
							 "$file<br />\n";
					}

				}
				closedir($handle);
			}

			echo "<hr />";
			if (!empty($_GET['showDir'])){
				echo $_GET['showDir']."<br />";
				if ($handle2 = opendir('./ordner'.'/'.$_GET['showDir'])){
					while (false !== ($file = readdir($handle2))) {
						$datei = explode(".",$file);
						if($file !== '.' && $file !== '..' && $datei[1] !== 'jpg') {
							echo "=> <a href='./index.php?showDir=".$file."'><img src='./images/plus.gif' border='0'></a> ".
							"<a href='./index.php?openDir=".$file."'><img src='./images/ordner.gif' border='0'></a> ".
							"<a href='./mkDir.php?newDir=".$file."'><img src='./images/n.gif' border='0'></a> ".
							"$file<br />\n";
						}
					}
					closedir($handle2);
				}
			}

Ich habe die Seite mit Tables like explorer aufgeteilt, also links die Navi und rechts den Inhalt der jeweiligen Ordner.

Die Navi sollte so aussehen:
Hauptordner1
Hauptordner2
Unterordner1 von Hauptordner1
Unterordner2 von Hauptordner1

Mit meinem Code erhalte ich jetzt nur mehr die Unterordner der jeweiligen Hauptordner, ohne die Hauptordner oben anzuzeigen.

Wo liegt mein Denkfehler? Bitte um Hilde, danke
 
Um das ganze vielleicht besser zu erklären...

Mit folgendem Code kann ich auf Klick eines Plussymbols die Unterordner des gewählten Hauptordners anzeigen - allerdings nur im Main-Teil der Seite:

PHP:
echo "<table border='1' height='720' width='960' cellpadding='3' cellspacing='0'>".
		  "<form action='".$_SERVER['PHP_SELF']."' method='POST'>".
		  "<tr>".
		   "<td height='40' valign='top' width='100'><br /><input name='textfield' type='text' size='21'><p />".
		        "<input type='submit' name='Submit' value='neuen Ordner erstellen'>".
		   "<br />".
          "</form><p />";
          
          // Table Navigation
          if ($handle = opendir('./ordner')){
				while (false !== ($file = readdir($handle))) {
					//for ($i =0; $i < 100; $i++){
					if($file !== '.' && $file !== '..') {
						echo "<a href='./index.php?showDir=".$file."'><img src='./images/plus.gif' border='0'> </a>".
							 "<a href='./index.php?openDir=".$file."'><img src='./images/ordner.gif' border='0'> </a>".
							 "<a href='./mkDir.php?newDir=".$file."'><img src='./images/n.gif' border='0'> </a>".
							 "$file<br />\n";
					}

				}
				closedir($handle);
			}



			echo "<td>";

			// Table Main, Ordner
			if ($_GET['openDir']){
				require_once"./ordnerAuslesen.php";
			}
			else{
				echo "";
			}

			if ($_GET['showDir']){
				echo "<u>Inhalt ".$_GET['showDir']."</u><br />";
				if ($handle = opendir('./ordner'.'/'.$_GET['showDir'])){
					while (false !== ($file = readdir($handle))) {
						$datei = explode(".",$file);
						if($file !== '.' && $file !== '..' && $datei[1] !== 'jpg') {
							echo "=> <a href='./index.php?showDir=".$file."'><img src='./images/plus.gif' border='0'></a> ".
							     "<a href='./index.php?openDir=".$file."'><img src='./images/ordner.gif' border='0'></a> ".
							     "<a href='./mkDir.php?newDir=".$file."'><img src='./images/n.gif' border='0'></a> ".
							     "$file<br />\n";
						}
					}
					closedir($handle);
				}
			}


			echo "</td></tr></table>";

?>
	</body>
	</html>

Also, könnt Ihr mir bitte sagen, wie ich die Unterordner in die Navigation bringe? Danke
 
jaja, den Wald vor lauter...

Würde ja gar nicht mehr in diese Ecke gehören! :-(

Is ja nur eine Formatierungsgeschichte!

Also, für alle die es Interessiert, oder es auch mal brauchen könnten:
PHP:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
	      "http://www.w3.org/TR/html4/loose.dtd">
	<html>
	<head>
	<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
	<title>Bildbearbeizungssystem Manet Beyond Design GmbH</title>
	</head>
	 <BODY TOPMARGIN=0 LEFTMARGIN=0 MARGINWIDTH=0 MARGINHEIGHT=0 ">

<?php

	// Funktion zum anlegen eines Ordners
	function recursive_mkdir($path, $mode = 0777){
		$dirs = explode(DIRECTORY_SEPARATOR, $path);
		$count = count($dirs);
		$path = '.';
		for ($i = 0; $i < $count; ++$i){
			$path .= DIRECTORY_SEPARATOR . $dirs[$i];
			if (!is_dir($path) && !mkdir($path, $mode)){
				return false;
			}
		}
		return true;
	}

	// Gesamttable
	echo "<table border='1' height='720' width='960' cellpadding='3' cellspacing='0'>".
		  "<tr><td>".

				  // Ordner anlegen
				  "<form action='".$_SERVER['PHP_SELF']."' method='POST'>".
				  "<table border='0' height='720' width='100' cellpadding='3' cellspacing='0' valign='top'>".
				   "<tr>".
					   "<td height='40' height='110'>".
						   "<br />".
						   "<input name='textfield' type='text' size='21'><p />".
						   "<input type='submit' name='Submit' value='neuen Ordner erstellen'>".
					   "</td>".
					"</tr>".
		          "</form>".

		          // Ordner anzeigen
		          "<tr><td height='210' valign='top'>";

				   //Erstellt ein Verzeichnis ausgehend von der Lage des Skriptes
					if ($_POST['Submit'] == "neuen Ordner erstellen"){
						$dir = $_POST['textfield'];
						recursive_mkdir ("./ordner/".$dir, 0777);
					}

					if ($handle = opendir('./mike')){
						while (false !== ($file = readdir($handle))) {
							//for ($i =0; $i < 100; $i++){
							if($file !== '.' && $file !== '..') {
								echo "<a href='./index.php?showDir=".$file."'><img src='./images/plus.gif' border='0'> </a>".
									 "<a href='./index.php?openDir=".$file."'><img src='./images/ordner.gif' border='0'> </a>".
									 "<a href='./mkDir.php?newDir=".$file."'><img src='./images/n.gif' border='0'> </a>".
									 "$file<br />\n";
							}

						}
						closedir($handle);
					}

					echo "</td></tr>";

					// Unterordner anzeigen
					echo "<tr><td valign='top'><hr />";

					if ($_GET['showDir']){
						echo "<u>Inhalt ".$_GET['showDir']."</u><br />";
						if ($handle = opendir('./ordner'.'/'.$_GET['showDir'])){
							while (false !== ($file = readdir($handle))) {
								$datei = explode(".",$file);
								if($file !== '.' && $file !== '..' && $datei[1] !== 'jpg') {
									echo "=> <a href='./index.php?showDir=".$file."'><img src='./images/plus.gif' border='0'></a> ".
									     "<a href='./index.php?openDir=".$file."'><img src='./images/ordner.gif' border='0'></a> ".
									     "<a href='./mkDir.php?newDir=".$file."'><img src='./images/n.gif' border='0'></a> ".
									     "$file<br />\n";
								}
							}
							closedir($handle);
						}
					}
					echo "</td></tr></table>";

		echo "</td><td>";


			// Table Main, Ordner
			echo "<table border='1' height='720' width='920' cellpadding='3' cellspacing='0'>".
          		 "<tr><td>";
					if ($_GET['openDir']){
						require_once"./ordnerAuslesen.php";
					}
					else{
						echo "";
					}
			echo "</td></tr></table>";


		echo "</td></tr></table>";

?>
	</body>
	</html>

Danke für Eure Hilfe, Salü
 
Zurück