aufklappbares Verzeichnismenü

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

  • aufklappbares Verzeichnismenü

    Hallo Forum!

    Ich brauche dringend eure Hilfe! Ich beschäftige mich gerade mit der Erstellung eines aufklappbaren Verzeichnismenüs (nur mit PHP!!). Ich möchte also zunächst alle Oberverzeichnisse anzeigen, und klickt man dann auf eines davon sollen dessen Unterverzeichnisse angezeigt werden usw.

    Bisher hab ich nur die Anzeige sämtlicher Verzeichnisse in meinem Root-Verzeichnis hinbekommen, aber große Probleme bereitet mir die Aufklappgeschichte. Ich hänge an der Bedingung, die dort hin gehört und komme einfach nicht dahinter, wie ich die formulieren muss. Ich poste hier mal meinen Code, kann mir jemand helfen?

    PHP-Code:
    function show_all_files($verzeichnis$links 0
    {
    $handle opendir($verzeichnis);

    while (
    $verz readdir($handle)) 
      {
    //Prüfen: Handelt es sich um ein Verzeichnis?
    if($verz != "." && $verz != ".."
    {

    if(
    is_dir($verzeichnis."/".$verz)) 
    {
    echo 
    '<div style="padding-left: '.$links.'">';
    echo 
    "<a href='".$PHP_SELF."?what=".$verz."'>"$verz ."<br /></a>";echo '</div>';

    show_all_files($verzeichnis."/".$verz$links+30);

    else
    {...  }
        }
      }
    //while
    closedir($handle); 
    Zuletzt geändert von Nena; 07.02.2006, 16:54.

  • #2
    hallo und herzlich willkommen... bitte lesen und befolgen:

    http://www.php-resource.de/forum/sho...threadid=50454
    2 meiner pages:

    Kommentar


    • #3
      Benutze beim Posten von Code bitte die PHP-Tags!

      Du solltest auch deine Get-Variable "what" mit in das Script einbeziehen.
      mfg - sagg

      Kommentar


      • #4
        Hi Nena,

        was macht die variable links?

        ansonsten versuchs mal so
        PHP-Code:
        function show_all_files($verzeichnis$parent false
        {
        $handle opendir($verzeichnis);

        while (
        $verz readdir($handle)) 
        {
        //Prüfen: Handelt es sich um ein Verzeichnis?
        if($verz != "." && $verz != ".."
        {

        if(
        is_dir($verzeichnis."/".$verz)) 
        {
        echo 
        '<div style="padding-left: '.$links.'">';
        echo 
        "<a href='".$PHP_SELF."?what=".$verz."'>"$verz ."<br /></a>";echo '</div>';

        if(
        $parent == $verzeichnis)
        show_all_files($verzeichnis."/".$verz$verz);

        else
        {... }
        }
        }
        //while 
        Zuletzt geändert von toshen; 07.02.2006, 17:11.

        Kommentar


        • #5
          $links wird meiner Ansicht nach eine Style-Definition enthalten, sprich uninteressant.
          mfg - sagg

          Kommentar


          • #6
            Hi toshen,

            vielen Dank für deine schnelle Antwort!
            Das stimmt, mit $links wollte ich nur die Einrückung vornehmen... Leider komme ich immer noch nicht weiter - hast du vielleicht noch einen Tipp für mich?

            Kommentar


            • #7
              inwieweit kommst du nicht weiter?

              ich habe das script nicht getestet, deshalb wärs gut wenn du mir sagen würdest ob die funktion müll ist oder du ein anderes problem hast (einbindung).

              Kommentar


              • #8
                Wie ich ganz zu Anfang beschrieben habe, macht die Funktion nur Folgendes: Alle Oberverzeichnisse werden angezeigt. Wenn ich nun auf eines dieser Verzeichnisse klicke, öffnet es sich und die darin liegenden Verzeichnisse werden angezeigt. Klicke ich nun aber wiederum auf eines DIESER Verzeichnisse, klappt das Menü wieder zu anstatt mir die in dem Verzeichnis liegenden Unterverzeichnisse anzuzeigen...

                Also liegt mein Problem in der Funktion. Das Aufklappen funktioniert noch nicht, weil ich Schwierigkeiten habe, die Bedingung zu formulieren

                Kommentar


                • #9
                  PHP-Code:
                  function show_all_files($verzeichnis$parent false
                  {
                  $parent explode("/"$parent2);

                  $handle opendir($verzeichnis);

                  while (
                  $verz readdir($handle)) 
                  {
                  //Prüfen: Handelt es sich um ein Verzeichnis?
                  if($verz != "." && $verz != ".."
                  {

                  if(
                  is_dir($verzeichnis."/".$verz)) 
                  {
                  echo 
                  '<div style="padding-left: '.$links.'">';
                  echo 
                  "<a href='".$PHP_SELF."?what=".$verz."'>"$verz ."<br /></a>";echo '</div>';

                  if(
                  $parent[0] == $verzeichnis)
                  show_all_files($verzeichnis."/".$verz$parent[1]);

                  else
                  {... }
                  }
                  }
                  //while 
                  tree.php
                  ------------------------
                  PHP-Code:
                  show_all_files("meinordner""unterordner2");

                  oder

                  show_all_files
                  ("meinordner""unterordner2/subdir4"); 
                  versuch das mal

                  Kommentar


                  • #10
                    Hmm... Das Problem hierbei ist, dass ich dann sowohl den Namen des oberen Verzeichnisses als auch den des darin liegenden Verzeichnisses an die Funktion übergeben müsste. Ich muss es allerdings so machen, dass ich nur z.B.
                    PHP-Code:
                    show_all_files("../fileroot"); 
                    ausgebe und ich dann in sämtliche Ordner die darin liegen hineinspringen kann.

                    Habe ich z.B. ein Verzeichnis1 im Fileroot-Verzeichnis und klicke darauf, gibt er mir das darin liegende Verzeichnis1.1 aus, aber wenn ich dann auf Verzeichnis1.1 klicke, kennt die Funktion irgendwie das darüberliegende Verzeichnis nicht mehr. Nur wie kann ich der Funktion bei der Rekursion diese Info mitgeben?

                    Kommentar


                    • #11
                      *edit*
                      Zu den Post von dir gerade eben: dann musst du wohl den gesammten Pfad übergeben, und nicht nur den einen Ordnername.

                      Aber das eben von mir geschrieben schmeiss ich mal eben weg, da ich gerade sehe das es nicht mehr relevant ist.
                      Zuletzt geändert von sagg; 07.02.2006, 17:27.
                      mfg - sagg

                      Kommentar


                      • #12
                        poste mal bitte dein komplettes script + html ausgabe

                        Kommentar


                        • #13
                          @toshen & sagg: Mal vorneweg: Tut mir leid wenn ich mich noch etwas ungeschickt anstelle. Bitte sagt's mir einfach.

                          @toshen:
                          Der Code oben ist eigentlich der komplette... Hier fehlt noch die Bedinung, weil die Bedingung
                          PHP-Code:
                          if($_GET['what'] == $verz
                          halt nicht das tut, was ich will. So habe ich einfach die Verzeichnisnamen (aus der DB) untereinander stehen.


                          PHP-Code:
                          function show_all_files($verzeichnis$links 0
                          {
                          $handle opendir($verzeichnis);

                          while (
                          $verz readdir($handle)) 
                            {
                          //Prüfen: Handelt es sich um ein Verzeichnis?
                          if($verz != "." && $verz != ".."
                          {

                          if(
                          is_dir($verzeichnis."/".$verz)) 
                          {
                          echo 
                          '<div style="padding-left: '.$links.'">';
                          echo 
                          "<a href='".$PHP_SELF."?what=".$verz."'>"$verz ."<br /></a>";echo '</div>';

                          show_all_files($verzeichnis."/".$verz$links+30);

                          else
                          {...  }
                              }
                            }
                          //while
                          closedir($handle); 
                          @sagg: Sorry weil ich deinen Post verschwitzt habe! Ich bitte um Nachsicht mit den Neuen
                          Ich denke mit dem Pfad hast du Recht, nur wie bringe ich den hier ein. Das muss ich mir jetzt auch nochmal überlegen...
                          Zuletzt geändert von Nena; 07.02.2006, 17:50.

                          Kommentar


                          • #14
                            Aber ich vermisse immernoch die stelle, an der du $_GET['what'] verwendest.
                            Von daher verstehe ich nicht, wie du überhaupt in ein Unterverzeichniss kommst.
                            mfg - sagg

                            Kommentar


                            • #15
                              Ok, sorry - hier mein Code inklusive der if-Abfrage:

                              PHP-Code:

                              function show_all_files($verzeichnis$links 0
                              {
                              $handle opendir($verzeichnis);

                              while (
                              $verz readdir($handle)) 
                              {
                              if(
                              $verz != "." && $verz != ".."
                              {

                              if(
                              is_dir($verzeichnis."/".$verz)) 
                              {
                              echo 
                              '<div style="padding-left: '.$links.'">';
                              echo 
                              "<a href='".$PHP_SELF."?what=".$verz."'>"$verz ."<br /></a>";echo '</div>';

                              if(
                              $_GET['what'] == $verz)
                              {
                              show_all_files($verzeichnis."/".$verz$links+30);
                              }

                              else
                              {
                              //Anzeige der Dateien
                              /*echo '<span style="padding-left: '.$links.'">';
                              echo '<a href="'.$verzeichnis."/".$verz.'">'.$verz.'</a>';
                              echo '</span><br/>';
                              */
                              }
                              }
                              }
                              //while
                              closedir($handle);

                              Kommentar

                              Lädt...
                              X