Einzelnen Beitrag anzeigen
  #9 (permalink)  
Alt 24-03-2012, 17:24
Benutzerbild von mermshaus mermshaus
 Registrierter Benutzer
Links : Onlinestatus : mermshaus ist offline
Registriert seit: Jun 2009
Beiträge: 451
mermshaus wird schon bald berühmt werden
Standard

Mit Hack meine ich, dass die Lösung nicht besonders sauber und nicht vollständig durchdacht ist.

Ein Problem ist etwa, dass die Bedingung auch erfüllt ist, wenn der aktuelle Pfad „path“ lautet, und in $_GET['l'] etwa „patha“ steht. Das ist ein anderes Verzeichnis, erfüllt aber die Substring-Bedingung. Da müsste noch geprüft werden, ob das nächste Zeichen in $_GET['l'] ein Slash ist oder ob der String beendet ist.

So was „ordentlich“ zu schreiben, ist gar nicht so leicht.

PHP-Code:
function navigation_rekursiv($path$activePath$depth 0)
{
    
$path rtrim($path'/');

    
$ret = array();

    
$ret[] = array(
        
'depth' => $depth,
        
'path'  => $path,
        
'title' => basename($path)
    );

    if (
        
is_dir($path)
        && 
$path === substr($activePath0strlen($path))
        && 
in_array(substr($activePathstrlen($path), 1), array(false'/'))
    ) {
        
$handle opendir($path);

        while (
$datei readdir($handle)) {
            if (
$datei === '.' || $datei === '..') {
                continue;
            }

            
$ret array_merge(
                
$ret,
                
navigation_rekursiv($path '/' $datei$activePath$depth 1)
            );
        }

        
closedir($handle);
    }

    return 
$ret;
}

$rootPath './Inhalt';

if (!isset(
$_GET['l'])) {
    
$_GET['l'] = '';
}

$entries navigation_rekursiv($rootPath$_GET['l'], 0);

foreach (
$entries as $entry) {
    echo 
str_repeat(' '$entry['depth'] * 4)
       . 
'<a href="./Startseite.php?l=' $entry['path'] . '">' $entry['title'] . '</a><br />';

Eigentlich müsste man eine Baumstruktur aufbauen.

Geändert von mermshaus (24-03-2012 um 17:35 Uhr)
Mit Zitat antworten