Verzeichnisse auslesen klappt, aber aufklappbare Menüstruktur?

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

  • Verzeichnisse auslesen klappt, aber aufklappbare Menüstruktur?

    Hallo,

    Ich habe ein Problem, und brauch mal bitte Eure Hilfe...

    Zum Hintergrund:
    Ich möchte meine Verzeichnisse auslesen lassen, und und eine aufklappbare Menüstruktur legen. Meine Verzeichnisse haben max. 3 Ebenen in der Tiefe. In jedem Verzeichnis (Ordner) liegt eine index.php, aus der natürlich beliebige Variablen an das Menü übergeben werden könnten.

    Das Auslesen klappt. Das Script erstellt mir quasi eine Sitemap. Nun fehlen mir die Ideen und die Ansätze, das ganze als aufklappbare Menüstruktur darzustellen.

    Mein Code sieht wie folgt aus:

    PHP-Code:
    $dir "../";
        
    $files1 scandir($dir);
        
        foreach (
    $files1 as $wert1) { 
                if (
    $wert1!="." && $wert1!=".." && $wert1!="source" && $wert1!="test" && $wert1!="index.php") {
                echo (
    "<a href='../$wert1/'>$wert1</a><br>"); 
                if(
    is_dir($dir."/".$wert1)) {
                   
    $files2 scandir($dir."/".$wert1);
                   foreach (
    $files2 as $wert2) {
                              if (
    $wert2!="." && $wert2!=".." && $wert2!="index.php") {
                           echo (
    "- <a href='../$wert1/$wert2/'>$wert2</a><br>"); 
                           if(
    is_dir($dir."/".$wert1."/".$wert2)) {
                                  
    $files3 scandir($dir."/".$wert1."/".$wert2);
                                  foreach (
    $files3 as $wert3) {
                                  if (
    $wert3!="." && $wert3!=".." && $wert3!="index.php") {
                                  echo (
    "- - <a href='../$wert1/$wert2/$wert3/'>$wert3</a><br>"); 
                                  }
                                }
                            }
                        }
                       }
                }
            }
        } 
    Dieser Code bringt mir


    home
    seite1
    - seite1-1
    - seite1-2
    - - seite1-2-1
    - - seite1-2-2
    - seite1-3
    seite2
    - seite2-1
    seite3
    seite4
    seite5
    - seite5-1
    - seite5-2
    - seite5-3
    - seite5-4
    - - seite5-4-1
    seite6

    Wie lässt sich das nun realisieren?
    Gruss,

    Volker

  • #2
    Nicht ohne Javascript.
    Fertige Ansätze für solche Menüs gibt es einige. Mein Liebling ist der hier. (Demo am unteren Seitenrand). Gibts auch Version, die live nachladen kann: http://webfx.eae.net/dhtml/xloadtree/xloadtree.html

    Kommentar


    • #3
      javascript ist nicht zwingend notwendig, das aufklappen ist auch mit php realisierbar, erfordert allerdings jeweils einen reload - ist klar.

      hier mal ein ansatz, ist die pear menu3 klasse:
      http://www.ulf-wendel.de/projekte/menu/index.php

      Kommentar


      • #4
        Danke für Eure Antworten.

        Also, Javascript möchte ich nur ungern verwenden, da ich einige Leute kenne, die sowas im Browser deaktiviert haben, und die können das Menü dann ja nicht sehen.

        Das Ding von Ulf Wendel habe ich auch gefunden.
        Allerdings verstehe ich das so leider (noch) nicht, da ich Anfänger bin. Das, was Ulf da gecoded hat, habe ich versucht umzusetzen, ohne Erfolg.

        Der Code, den ich da gebastelt habe, lässt bestimmt Rückschlüsse auf meine Fähigkeiten zu ;-) aber den verstehe ich wenigstens.

        Vielleicht ist es ja aber auch möglich, meinen Code zu erweitern.
        Meine Ansätze hierfür sind folgende:

        Aus jeder index.php übergebe ich Variablen an das Menü, wie z.B. für die Seite [home]:
        PHP-Code:
        $root="../";
        $tl_1="home";
        $tl_2="";
        $tl_3=""
        Für die Seite [seite1/seite1-2/seite1-2-1] sieht das so aus:
        PHP-Code:
        $root="../../../";
        $tl_1="seite1";
        $tl_2="seite1-2";
        $tl_3="seite1-2-1"
        Wenn ich diese Variablen an das Menü übergebe, dann müsste ich damit doch auch irgendwie die "you-are-here" Geschichte lösen können, und demzufolge auch die Struktur hinbekommen.

        Ich weiß aber noch nicht wie.... Habt Ihr hierzu noch eine Idee?
        Gruss,

        Volker

        Kommentar


        • #5
          So, bis zur 2. Ebene hab ich's geschafft, bekomme die 3.te aber nicht hin.

          Der Code:
          PHP-Code:
          if ($root == "../") {
                 
          $path "../";
                 
          $menu1 scandir($path);
                 foreach (
          $menu1 as $entry1) { 
                       if (
          $entry1!="." && $entry1!=".." && $entry1!="source" && $entry1!="test" && $entry1!="index.php") {
                       echo (
          "<a href='../$entry1/'>$entry1</a><br>"); 
                    if ((
          $entry1 == $tl_1) && ($tl_2 == "dir")) {
                        
          $menu2 scandir($path."/".$entry1);
                        foreach (
          $menu2 as $entry2) {
                              if (
          $entry2!="." && $entry2!=".." && $entry2!="index.php") {
                            echo (
          "- <a href='../$entry1/$entry2/'>$entry2</a><br>");
                            }
                            }
                        }
                    }
                 }
              } 
          Aus der 1. Ebene (z.B. [home] ) übergebe ich
          PHP-Code:
          $root="../";
          $tl_1="home";
          $tl_2="leer";
          $tl_3="leer"
          Aus der 2. Ebene (z.B. [seite1/seite1-2] ) übergebe ich
          PHP-Code:
          $root="../../";
          $tl_1="seite1";
          $tl_2="seite1-2";
          $tl_3="dir"
          und aus der 3. Ebene (z.B. [seite1/seite1-2/seite1-2-1] ) übergebe ich
          PHP-Code:
          $root="../../../";
          $tl_1="seite1";
          $tl_2="seite1-2";
          $tl_3="seite1-2-1"
          Bitte, wer erbarmt sich, und hilft mir ???
          Zuletzt geändert von vs1; 14.07.2006, 03:25.
          Gruss,

          Volker

          Kommentar


          • #6
            Hab sowas auch mal gemacht besteht nur aus einer funktion
            die übergibt den auf zu klappenden ordner per GET und auf der nächsten seite wird überprüft ob der jeweilige pfad auch in dem "GET"-Pfad liegt per substr usw.
            Wenn du willst kann ichs dir mal schicken. includive 2 bildern die eins für dateien und eins fürn ordner bereit stehen sollten
            ansonten übernimmt die funktion die ganze ausgabe und n test script schick ich auf wunsch auch noch mit

            EDIT:funktioniert belibig tief, da sich die funktion immer wieder selber auf ruft
            Zuletzt geändert von madmaurice; 14.07.2006, 18:34.

            Kommentar


            • #7
              Hi, madmaurice

              Ja, das wäre schön, wenn Du mir mal was dazu schickst. Wie geschrieben, ich bin Anfänger, und bei GET noch nicht angekommen. Der Code, den ich da gebaut habe, ist wahrscheinlich total schlecht, aber, ich kann ihn verstehen, und nachvollziehen.

              Wenn Du das in einer Funktion hast, beliebig tief, dann wäre das echt der Hammer.

              Habe PHP 5, kein SQL.

              Freue mich auf Deine eMail!

              P.S.: Bin dem Problem mit der 3. Ebene auf der Spur.

              Danke schonmal im Voraus!
              Gruss,

              Volker

              Kommentar


              • #8
                hi vs1,
                das forum will deine mail einfach net rausrücken ich poste das hier gleich mal kurz und gib nochne anleitung dazu (is eigentlich für mich gedacht und net zum veröffentlichen und deswegen hab ich auf die handhabung net so geachtet.
                funktioniert mit:
                PHP 4 oder 5 was sonst?
                MySQL brauch das nicht
                der zeigt einfach die ganzen datein und ordner an und jenach tiefe dauert die lade zeit vll so 0,1 bis 1 sekunde
                Angehängte Dateien

                Kommentar


                • #9
                  Also die ganze configuration läuft in der config.inc.php ab:
                  PHP-Code:
                  $current_dir Verzeichnis bei dem begonnen wird
                  $ordner_pic 
                  Relativer Pfad zur mitgelieferten dic.bmp
                  $file_pic 
                  Relativer Pfad zur mitgelieferten file.bmp
                  $copyright 
                  Kannste leer lassen oder deinen Namen eingeben 
                  Dann in wie in der explorer.php
                  PHP-Code:
                  include("function.lib.php");
                  include(
                  "config.inc.php");
                  $cdir = ($_GET["dir"] == "" $current_dir $_GET["dir"]);
                  directory($current_dir,0,$file_pic,$ordner_pic,$cdir); 
                  diese beiden zeilen einfügen wo das ganze angezeigt werden soll
                  zeile 1:includen
                  zeile 2: un nochma
                  zeile 3:$cdir entweder den GET-Parameter zuweisen oder die den pfad aus der config.inc.php
                  zeile 4: funktion aufrufen mit parametern:
                  $current_dir = anfangsverzeichnis
                  0 = erste ebene
                  $file_pic = wie oben erklärt
                  $ordner_pic = auch wie oben
                  $cdir = der GET-Parameter

                  ich hoffe ich konnte helfen^^

                  Kommentar


                  • #10
                    @ madmaurice:

                    Du hast Post!
                    Gruss,

                    Volker

                    Kommentar

                    Lädt...
                    X