# Unterordner anzeigen



## eugster (18. September 2003)

Hallo

Ich möchte mit einem Script alle Ordner in einem 'Oberordner' anzeigen lassen. Das mir die Datein angezeigt werden hab ich geschaft - aber wie bringe ich die Ordner raus?

Vielen Dank & Gruss, Marc

PS: Das Script für die datei sieht so aus:

```
<?php
$directory=".";
$extension=".pps";

$d   = dir($directory);
while($entry=$d->read())
        if (substr($entry,-strlen($extension)) == $extension)
		{
             	$arr = split("\.",$entry);
	echo "<li><a href='$entry' target='mainFrame'>$arr[0]</a><br></li>";
}
$d->close();
?>
```
//mod-comment: Bitte diese php Tags in Zukunft nutzen. Syntax Hightlighting ist sehr hilfreich


----------



## Tim C. (18. September 2003)

Öhm naja, du scheinst das ganze ein wenig in Klassen und (selbstgeschriebene?) Methoden verstrickt zu haben, das einfachste Grundprinzip sieht aber wie folgt aus und verfolgt den Ansatz der _rekursiven Programmierung_ (Nähere Informationen hierzu liefert Google. 

```
function readit($dir) {
  $handler = opendir($dir);
  while($file = readdir($handler)) {
    if(is_dir($file)) { //wenn der momentane Zeiger keine Datei sondern ein Verz. ist
      readit($dir."/".$file); //ruft sich die Funktion selbst auf und liest so das Unterverzeichnis aus.
    }
    else {
      //hier kommt halt hin, was du mit normalen Dateien machst
      //evtl. halt sogar noch Unterscheidung nach Dateiendungen
    }
  }
}
```
Ich denke das sollte selbsterklärend sein und auch klarmachen, was rekursive Programmierung ist.

Das musst du jetzt halt nur, wenn du willst und es für nötig hälst, an deine Methoden da anpassen.


----------



## eugster (19. September 2003)

Hab mal etwas herumgepröbelt.... Das ist dabei rausgekommen:


```
<?php
$dir = '.';
$ascsort = "<a style=\"text-decoration:none\" href=\"$PHP_SELF?sort=asc\">A..Z</a>";
$dscsort = "<a style=\"text-decoration:none\" href=\"$PHP_SELF?sort=dsc\">Z..A</a>";
$dp = opendir($dir);
while ($file = readdir($dp))
{
  $directory[(int) is_dir($file)][] = $file;
}
echo '<h3>Verzeichnisse</h3>';
foreach($directory[1] as $z) echo "<a href='$z'>$z</a><br>";
closedir($dp);
?>
```

Jetzt frag ich mich nur noch, ob es wohl möglich ist, die bei der Ausgabe auf den ersten Linien erscheinenden . und .. (für die Verzeichnisauswahl) irgendwie abzufangen... 

Also dieses hier:

Verzeichnisse
.
..
Ordner_1
Ordner_2



Vielen Dank schon jetzt!


----------



## Tim C. (20. September 2003)

Och manno, das ist jetzt aber wirklich mehr als einfach ...

```
if($file != "." && $file != "..") {
}
```
Das hätte man sich doch auch so denken können oder ?


----------

