aufklappbares Verzeichnismenü

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • #16
    Sorry Nena das es solange gedauert hat, aber ich war mal "kurz" weg.

    So müsste es funktionieren (tuts bei mir).

    hab den code nicht kommentiert, kannst bei fragen aber gerne fragen.

    PHP-Code:
    <?
    function show_all_files($verzeichnis, $parent = false, $links = 0) 
    {

    $parent = explode("/", $parent, 3);
    if(isset($parent[1]) AND isset($parent[2])) //Falls mehr als ein Subdir
    $parenttmp = $parent[1]."/".$parent[2];
    elseif(isset($parent[1])) //Falls nur noch ein Subdir
    $parenttmp = $parent[1];
    else //Falls kein Subdir
    $parenttmp = false;

    $handle = opendir($verzeichnis);

        while ($verz = readdir($handle)) 
        {
            //Prüfen: Handelt es sich um ein Verzeichnis?
            if($verz != "." && $verz != "..") 
            {
            
                if(is_dir($verzeichnis."/".$verz)) 
                {
                $verzeichnistemp = str_replace("../", "", $verzeichnis);
                echo '<div style="padding-left: '.$links.'px">';            
                echo "<a href='?what=".$verzeichnistemp."/".$verz."'>". $verz ."<br /></a>";
                echo '</div>';
                
                if(isset($parent[1]) AND $parent[1] == $verz)
                    show_all_files($verzeichnis."/".$verz, $parenttmp, $links + 35);
                }
            } 
        }//while
    }
    if(!isset($_REQUEST['what']))
    $_REQUEST['what'] = false;

    show_all_files("../jogging", $_REQUEST['what']);
    ?>

    Kommentar


    • #17
      Guten Morgen toshen,

      besser kann mein Tag ja gar nicht anfangen - ich weiß nicht, wie ich dir danken kann Ich war wirklich mit meinem Latein am Ende (bzw. mit meinem PHP). Dein Skript funktioniert einwandfrei mit beliebig vielen Unterverzeichnissen (juhu!!), wirklich tausend Dank!!

      Da du es mir so nett anbietest: Wäre es möglich, dass du mir noch kurz erklärst, wie das mit dem $parent[]-Array funktioniert. Das mit der explode-Funktion hab ich mal nachgelesen und auch verstanden. Was ich jetzt noch nicht ganz verstehe, ist, wie ich mit
      PHP-Code:
      if(isset($parent[1]) AND isset($parent[2])) 
      prüfe, ob es mehrere Unterverzeichnisse gibt. Ich bekomme doch durch $parent[2] nur die Info, ob es ein drittes Element in diesem Array gibt, oder? Ich hoffe, die Frage ist nicht all zu blöd, aber wenn ich das weiß hab ich's glaub ich wirklich verstanden

      Kommentar


      • #18
        Hi Nena,

        Das Element $parent[0] ist das aktuelle Verzeichniss.
        Das Element $parent[1] ist Unterverzeichniss von $parent[0] was er als nächstes öffnen soll.
        In dem Element $parent[2] werden die restlichen Unterverzeichnisse gespeichert die für den aktuellen schritt unnötig sind.

        in $parenttmp wird dann das nächste $_REQUEST['what'] gespeichert.

        Du wirst merken das dieser String mit fortlaufender rekursion immer kürzer wird, bis er komplett abgearbeitet ist.

        das ganze wird dir deutlich wenn du unter den Block der $parenttmp erstellt:

        PHP-Code:
        echo "<pre>";
        print_r($parent); //gibt das $parentarray aus
        echo "</pre>"
        schreibst.
        PHP-Code:
        if(isset($parent[1]) AND isset($parent[2])) //Falls mehr als ein Subdir
        $parenttmp $parent[1]."/".$parent[2];
        elseif(isset(
        $parent[1])) //Falls nur noch ein Subdir
        $parenttmp $parent[1];
        else 
        //Falls kein Subdir
        $parenttmp false;

        print_r($parent); 
        Ich hoffe das Script wird so verständlicher.

        um es nochbesser zu verstehen empfehel ich dir bei variablen bei denen du dir nicht sicher bist in wieweit sie verarbeitet werden var_dump() bzw print_r() zu nutzen.

        Die beiden sind des debuggers beste Freunde.

        Kommentar


        • #19
          Super, jetzt leuchtet mir alles ein

          Nochmals vielen Dank, hast mir unheimlich geholfen!! (auch für den Tipp mit var_dump() und print_r()!)

          Kommentar

          Lädt...
          X