Hallo,
Entschuldigt bitte, wenn ich Euch mal wieder mit dem (wohl leidigen) Thema "Verzeichnis einlesen" bemühen muss, aber ich komme einfach nicht weiter, bzw. genauer gesagt, ich habe eine Lösung, die zwar funktioniert, mir aber nicht gefällt:
Ich möchte aus einer Verzeichnisstruktur ein Menü mit Untermenüs aufbauen.
Aktuell geschieht das folgendermassen, dass über eine PHP-Datei ein Ausgangsverzeichnis eingelesen und am Bildschirm ausgegeben wird. Klickt man nun auf einen Ordnernamen, dann wird die PHP-Datei mit dem aktuellen Ordnernamen aufgerufen, die jeweilige Struktur eingelesen und als Menü am Bildschirm aus. Klickt man nun wiederum auf einen Ordnernamen, dann wird die PHP-Datei mit dem aktuellen Ordnernamen wieder aufgerufen, die jeweilige Struktur wieder eingelesen und als Menü ausgegeben ...usw...
Meine Vorstellungen gehen nun in die Richtung, die gesamte Verzeichnisstruktur unterhalb eines Ausgangsverzeichnisses in eigene Arrays einzulesen, sie danach in ein Javascript-Array umzuwandeln und das Menü über Javascript ausgeben zu lassen.
Über folgende Funktion kann ich das Ausgangsverzeichnis einlesen:
function VerzeichnisEinlesen ($Verzeichnis)
{
$VerzeichnisZeiger = @opendir ($Verzeichnis);
while ($Element = @readdir ($VerzeichnisZeiger))
{
if ($Element != "." && $Element != "..")
{
if (is_dir ("$Verzeichnis/$Element"))
$ArrayVerzeichnisse [] = "$Verzeichnis/$Element";
}
}
return $ArrayVerzeichnisse [];
}
Wenn ich die Funktion nun beiepielsweise mit $ArrayVerzeichnisse [] = VerzeichnisEinlesen ("/Bilder") aufrufe und sich im Ordner "Bilder" zunächst 3 Unterordner namens "Ordner1", "Ordner2" und "Ordner3" befinden, dann habe ich danach folgende Struktur:
Bilder
|
+- Ordner1
|
+- Ordner2
|
+- Ordner3
Nun kann ich dieses Array von 0 bis zu seiner Länge (= Anzahl der enthaltenen Elemente) durchlaufen lassen, um dann die ganze Prozedur für die einzelnen Elemente durchführen zu lassen:
for ($i = 0; $i < count ($ArrayVerzeichnisse); $i++)
$ArrayVerzeichnisse [][] = VerzeichnisEinlesen ($ArrayVerzeichnisse [$i]);
Und hier beginnen meine Probleme:
Woher soll die Funktion wissen, wieviele Dimensionen das übergebene Array hat ?
Ich könnte zwar sicherlich alle Ordner durchzählen und wüsste dann, wieviele Dimensionen ich pro Element benötige, doch dies wäre reichlich unprofessionell.
Ich hoffe, Ihr versteht, was ich meine :o)
Mir geht es darum, die Funktion "VerzeichnisEinlesen" so zu erweitern, dass ein beliebiger Ausgangsordner mit einer unbekannt tief verzweigten Ordnerstruktur komplett in einzelne Arrays abgelegt wird.
Das zweite Problem ist, wie ich diese Arrays dann richtig in Javascript-Arrays umwandle.
Hoffentlich könnt Ihr mir weiterhelfen.
Gruss, Stephan