Navigation mit Submenü1.1 + Submenü1.1.1

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Navigation mit Submenü1.1 + Submenü1.1.1

    Hallo Zusammen!

    Bisher hat alles mit der Suchfunktion gefunzt, aber jetzt habe ich mal eine Frage an euch..
    Ich möchte gerne eine Navigation schreiben, in der das Menü als Baumstruktur angezeigt wird. Soweit sogut eigentlich, aber ich möchte nicht nur mit id->parent_id arbeiten, sondern es sollen viele Unterpunkte möglich sein.

    Z.B.:
    1.
    1.1
    1.1.1
    2.
    3.
    3.1
    3.1.1
    3.1.1.1

    Hört sich ja eigentlich nach Nested Sets an, aber sowie ich das bisher ergoogled habe, kann man bei dieser Struktur nicht submenüs ein- bzw. ausblenden.?. (meckert, wenn ichs falsch verstanden habe)
    So soll es aber sein.. Wenn ich Menüpunkt 3.1 auswähle soll auch nur 3.1.1 angezeigt werden, und nur wenn dieser Menüpunkt ausgewählt wird soll 3.1.1.1 usw. angezeigt werden.
    JS möchte ich nicht einsetzen.
    Ich habe keine Ahnung, was ich machen soll, also bitte bitte helft mir mit ein paar Tipps auf die Sprünge, sonst sehe ich bald so aus..

    Danke schonmal

  • #2
    http://www.php-resource.de/forum/sea...der=descending

    da sollte was dabei sein
    Ich denke, also bin ich. - Einige sind trotzdem...

    Comment


    • #3
      Na das nenne ich mal schnelle Hilfe!!

      Vielen Dank!! Ich leses mir gleich mal durch.

      Comment


      • #4
        Ich habs jetzt erstmal so gemacht:

        1. -> id=1
        2. -> id=2
        2.1 -> id=21
        2.1.1 -> id=211

        Und es funzt (muss aber noch ne 0 vor die id's hängen, damit mehr Menüpunkte möglich sind). Es ist zwar bestimmt nicht die sauberste Lösung, aber für einen Anfänger wie mich schon mal ein erfolg
        Also nochmal danke, mein Problem ist durch Deine Hilfe gelöst worden.

        Comment


        • #5
          Hm... warum sollte bei der Verwendung von id und parentid nicht mehr als eine Ebene möglich sein

          PHP Code:
          id pid
          1  
          0
          2  
          0
          3  
          1
          4  
          3
          5  
          3
          6  
          2
          7  
          5
          8  
          1
          9  
          4
          10 
          4
          11 
          10

          =>

          1
          -3
          --4
          ---9
          ---10
          ----11
          --5
          ---7
          -8
          2
          -

          Comment


          • #6
            es geht - denke ich - um das auslesen in einem einzigen select
            Ich denke, also bin ich. - Einige sind trotzdem...

            Comment


            • #7
              Öhm ... hier geht auch

              Comment


              • #8
                in einem?

                auch für mysql 3?
                Ich denke, also bin ich. - Einige sind trotzdem...

                Comment


                • #9
                  was ist mySQL 3 ausserdem sprach er nicht von mySQL und ich auch nicht

                  Comment


                  • #10
                    OffTopic:

                    Ich denke, also bin ich. - Einige sind trotzdem...

                    Comment


                    • #11
                      Ich werde mir das mit den parent_ids wohl doch nochmal ausprobieren, aber hauptsache ich habe jetzt eine funktionierende Version erstmal.
                      Aber kann ich mit den parent_id's das auch so hinbekommen, dass nicht alle submenüs angezeigt werden, sondern nur die , die auf der selben ebene liegen??

                      bsp.

                      1.1
                      1.1.1
                      1.1.1.1

                      wenn 1.1 geöffnet wird, wird nur 1.1.1 angezeigt
                      wenn 1.1.1 geöfffnet wird wir 1.1 + 1.1.1 + 1.1.1.1 geöffnet

                      ??

                      Comment


                      • #12
                        aber ja doch

                        Comment


                        • #13
                          Suppi, dann nochmal danke!!

                          Falls ich dann doch wieder aufm schlauch stehe, dann weiß ich ja wen ich nerven kann

                          Comment


                          • #14
                            Ok, ich hätte nicht damit drohen sollen, jetzt mach ich sie auch noch wahr...

                            ich habs mal so versucht(+name , aber der iss hier ja unwichtig:



                            id | pid
                            1 | 0
                            2 | 0
                            3 | 2
                            4 | 3
                            5 | 2
                            6 | 5
                            7 | 2
                            8 | 7
                            9 | 7
                            10 | 0
                            11 | 10

                            bis zur 2ten ebene funzt es auch so und ich bekomme die ausgabe so:

                            1
                            2
                            -3
                            -5
                            -7
                            10

                            wenn ich das menu mit der id 2 auswähle. Jetzt möchte ich aber gerne, wenn ich -3 auswähle folgendes angezeigt bekommen:

                            1
                            2
                            -3
                            --4
                            -5
                            -7
                            10

                            Aber ich weiss nicht, wie ich an diese ebene komme...
                            Bis dorthin bin ich mit folgendem gekommen:



                            PHP Code:
                            if(!isset($id))  //wurde die Seite das erste mal aufgerufen -> Es werden alle hauptmenüpunkte angezeigt
                              
                            {
                              
                            $query_menu_level1=mysql_query("SELECT * FROM nav WHERE pid=0");    //pid=0, soll heißen alle hauptmenüpunkte
                              
                            while($menu_level1=mysql_fetch_array($query_menu_level1))
                                   {
                                   echo 
                            "<tr>";
                                   echo 
                            "<td><a href=\"$PHP_SELF?id=$menu_level1[id]\">$menu_level1[name]</a></td>";
                                   echo 
                            "</tr>";
                                   }
                              }


                            if(isset(
                            $id))  //wurde ein menüpunkt aufgerufen -> Es wird das hauptmenü mit seinen submenüs der ersten ebene aufgerufen
                              
                            {
                              
                            $query_menu_level1=mysql_query("SELECT * FROM nav WHERE pid=0"); //Hauptmeüpunkte auslesen
                              
                            while($menu_level1=mysql_fetch_array($query_menu_level1))
                                   {
                                   echo 
                            "<tr>";
                                   echo 
                            "<td><a href=\"$PHP_SELF?id=$menu_level1[id]\">$menu_level1[name]</a></td>";
                                   echo 
                            "</tr>";
                                   
                            $query_menu_level2=mysql_query("SELECT * FROM nav WHERE pid='$id'");  //Submenüeinträge auslesen
                                   
                            while($menu_level2=mysql_fetch_array($query_menu_level2))
                                        {
                                        if(
                            $id==$menu_level1[id])                                       //Gehört das Submenü zu dem Hauptmenü, dann ausgeben
                                          
                            {
                                          echo 
                            "<tr>";
                                          echo 
                            "<td><a href=\"$PHP_SELF?id=$menu_level2[id]\">-$menu_level2[name]</a></td>";
                                          echo 
                            "</tr>";
                                          }
                                        }
                                   }
                              }
                            //Ende des durchlaufs, falls ein Menüpunkt ausgewählt wurde 
                            Falls alles Schmu ist, bitte bescheid geben, dann sollte ich es vielleicht doch besser einfach lassen

                            Comment


                            • #15
                              ach du sch*****

                              queries in einer schleife sind böse ....

                              tipp. happy hatte in seinem ersten posting einen link gehabt. lies dir mal die dortigen threads noch einmal durch. da findest du die bessere lösung. ;-)
                              INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                              Comment

                              Working...
                              X