• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

rekursion

Status
Für weitere Antworten geschlossen.

philipp

Neues Mitglied
naja, ich hab nun endlich wieder ein klein bischen zeit für mich und will wieder mehr mit php machen. als übung wollte ich ein script schreiben, dass den inhalt einer ordnerstruktur anzeigt. mein gedanke war dieser:

PHP:
<?php
function listdirstructure($i){
	echo "<ul>";
	while ( $listit = readdir(opendir($i)) ) {
		echo "<li>".$listit."</li>";
		if (is_dir($listit) && $listit !== '.' && $listit !== '..' ) {
			listdirstructure($i."/".$listit);
		} else {
		echo "<li>".$listit."</li>";
		}
	}
	echo "</ul>";
}
listdirstructure('navigation');
?>

geht aber nicht...

edit: so gehts auch ned..

PHP:
<?php
//Funktion erstellen
//Diese Fuinktion liesst eine Ordnerstruktur aus und listet sie
function listdirstructure($i){
	echo "<ul>\n";
	while ( $listit = readdir(opendir($i)) ) {
		
		if (is_dir($listit) && $listit !== '.' && $listit !== '..' ) {
			echo "<li>".$listit."</li>\n";
			listdirstructure($i."/".$listit);
		} elseif ($listit !== '.' && $listit !== '..') {
		echo "<li>".$listit."</li>\n";
		}
	}
	echo "</ul>\n";
}
//Funktion starten
listdirstructure('navigation');
?>
 
Zuletzt bearbeitet:
Da du leider keinerlei HTML-Ausgabe gepostet hast, kann ich nur Vermutungen anstellen.

Bei dir müsste so etwas rauskommen:
HTML:
<ul>
    <li>datei</li>
    <li>ordner</li>
    <ul>
        <li>datei</li>
        <li>datei</li>
    </ul>
    <li>datei</li>
</ul>
Das ist jedoch syntaktisch nicht korrekt. Ein ul-Element darf nur li-Elemente als direkte Kinder haben. Also muss das so aussehen:
HTML:
<ul>
    <li>datei</li>
    <li>ordner
        <ul>
            <li>datei</li>
            <li>datei</li>
        </ul>
    </li>
    <li>datei</li>
</ul>

Der PHP-Code entsprechend:
PHP:
function listdirstructure($i){
    echo "<ul>\n";
    while ( $listit = readdir(opendir($i)) ) {
        
        if (is_dir($listit) && $listit !== '.' && $listit !== '..' ) {
            echo "<li>".$listit."\n";
            listdirstructure($i."/".$listit);
            echo "</li>\n";
        } elseif ($listit !== '.' && $listit !== '..') {
        echo "<li>".$listit."</li>\n";
        }
    }
    echo "</ul>\n";
}
 
danke, ich kenne mich mit html ausgezeichnet aus und da wär ich schon draufgekommen. aber trotzdem danke... nur das is nicht mein problem, meine funktion erzeugt eine endlosschleife und als ergebnis:

<li>.</li>
 
PHP:
function listdirstructure($i){
    echo "<ul>\n";
    while ( $listit = readdir(opendir($i)) ) {
        
        if (is_dir($listit) && ($listit !== '.') && ($listit !== '..')) {
            echo "<li>".$listit."\n";
            listdirstructure($i."/".$listit);
            echo "</li>\n";
        } elseif (($listit !== '.') && ($listit !== '..')) {
            echo "<li>".$listit."</li>\n";
        }
    }
    echo "</ul>\n";
}
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben