Menütiefenanzeige wie im diesem Forum

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

  • Menütiefenanzeige wie im diesem Forum

    Guten Tag,

    habe meine Menüstruktur vor kurzem in eine DB gepackt.
    Nun möchte ich so eine Tiefenstruktur anzeiget haben, wie in diesem Forum:


    PHP script resource Forum > Entwicklung > PHP Developer Forum

    Ich weiß absolut nicht wie ich das machen soll. Mit einem Stack ?
    Das wäre ja Blödsinn, oder ? Denn der Besucher könne ja auch auf "Entwicklung" (oben) klicken.

    Also wie nur ?

    Hier ist meine Navigationsklasse:

    PHP-Code:
    class Navigation

        var 
    $currentCategory;
        var 
    $pathToPage;         // Contains the path to the file in the link
                    
    var $cat_id;
                    var 
    $db;
                    var 
    $language;
                    var 
    $parent_id;
                    var 
    $nosubcat;
        
        function 
    Navigation(&$db$language$parent_id)
        {
            
    $this->db $db;
        
    $this->language $language;
        
    $this->parent_id $parent_id
        
    $this->nosubcat false;
        
    $this->_addCategoryToPath();
        }
     
        
    /**
         * Adds the current category to the stack
         *
         */
        
        
    function _addCategoryToPath()
       {
       }
                    
       function 
    returnNavigationStructure()
      {
                        
      }
                                    
      function 
    returnMenu()
     {
            
    $this->db->raw_query("SELECT cat_id, parent_id, name, file
                                      FROM navigation_structure ns, navigation_translation nt
                                                                                          WHERE (ns.parent_id = '0')
                                                                                                                            AND (ns.trans_id = nt.trans_id)
                                                                                                                   AND (nt.lang = '"
    .$this->language."')
                                  ORDER BY parent_id"
    );

                                    while(
    $row $this->db->fetch_array()) {
                
    $categories[] = $row;
            }

            if (
    count($categories) == 0) {
                            return 
    false;
                        } else {
                            return 
    $categories;
                        }
                    }
                    
        function 
    returnSubmenu()
       {
            
    $this->db->raw_query("SELECT cat_id, parent_id, name, file
                                      FROM navigation_structure ns, navigation_translation nt
                                                                                        WHERE (ns.parent_id = '"
    .$this->parent_id."')
                                                                                                                            AND (ns.trans_id = nt.trans_id)
                                                                                                                   AND (nt.lang = '"
    .$this->language."')
                                  ORDER BY parent_id"
    );
                        
                                    while(
    $row $this->db->fetch_array()) {
                
    $categories[] = $row;
            }

            if (
    count($categories) == 0) {
                            
    $this->nosubcat true;
                                                    return 
    false;
                        } else {
                            return 
    $categories;
                        }
        }

    Zuletzt geändert von compuboy1010; 30.04.2004, 13:42.

  • #2
    Was erwartest du? Soll man dir nen Code schreiben? Dann falsches Forum! Oder willst du nir Anregungen? Danna auch falsches Forum!

    *verschieb*

    Kommentar


    • #3
      Also eine Anregung wäre nicht schlecht.
      Hätte ich gewollt, dass jemand mir den Code gibt hätte ich geschrieben: "Bitte gib mir doch mal jemand den Code dazu".


      Kommentar


      • #4
        mh... mach dich mal mit dem Thema Nested Sets vertraut! damit kanst du beliebig viele Menüebenen verwalten und kannst die Hierarchie wieder auslesen!

        gruss

        Kommentar


        • #5
          Danke!!

          "nested Sets"?

          Meinst du hier im Forum oder wo wäre der beste Ausgangspunkt.
          Gibt es dafür im Netz richtige Tuts ?

          Danke

          Kommentar


          • #6
            guckst du HIER

            peter
            Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
            Meine Seite

            Kommentar


            • #7
              Danke,

              aber ich mache gerade folgendes Tutorial:

              http://www.php-resource.de/tutorials/read/21/3/

              Und schon stoße ich auf das erste Problem.

              Was hat das mit dem LOCK TABLES auf sich?
              Was ist das für ein Ausdruck oder ein Kommentar?


              Danke

              Kommentar


              • #8
                Tutorial ist ein und das selbe!

                Was glaubst du wohl, was Lock Tables heißt. Wirst du wohl übersetzen können, oder? Außerdem kannst du gefälligst ins Manual gucken!

                Kommentar


                • #9
                  http://www.mysql.de/doc/de/LOCK_TABLES.html

                  ist es so abwegig, da mal nachzuschauen?
                  Ich denke, also bin ich. - Einige sind trotzdem...

                  Kommentar


                  • #10
                    OffTopic:
                    "Manual? Was ist ein Manual?" Scheinen die meisten Leute leider nicht zu kennen!

                    Kommentar


                    • #11
                      Hallo,

                      tut mir leid.
                      Das war blöd. Hätte mir denken können, dass das ein MYSQL befehl war.
                      Schönes Wochenende!!!

                      Gruß Compu

                      Kommentar


                      • #12
                        Das war blöd. Hätte mir denken können, dass das ein MYSQL befehl war.
                        Klar, wird schließlich nur Mysql drin behandelt!

                        Kommentar


                        • #13
                          Hallo Leute,

                          also ich bin etwas schwer von Kapie.
                          Könnte mir jemand freundlicherweise erklären warum im folgendem Totorial:

                          http://www.develnet.org/39.html

                          in diesem Code:

                          LOCK TABLES node WRITE;

                          UPDATE node
                          SET lft = lft + 2
                          WHERE root_id = V_ROOT_ID
                          AND lft > V_RGT;

                          UPDATE node
                          SET rgt = rgt + 2
                          WHERE root_id = V_ROOT_ID
                          AND rgt >= V_RGT;

                          INSERT INTO node ( root_id, payload, lft, rgt )
                          VALUES ( V_ROOT_ID, 'B - Reply auf "A"', V_RGT, V_RGT + 1 );

                          UNLOCK TABLES;


                          lft + 2 gestzt wird und nicht +1 ?

                          Außerdem steht in dem Text vor diesem Code:

                          Diese Daten müssen vor der Einfügeoperation (z.B. durch ein entsprechendes SELECT-Statement für den zuerweiternden Knoten) ermittelt werden. Da üblicherweise eine übergeordnete Programmiersprache die Steuerung der SQL-Statements übernimmt, dürfte das Beschaffen dieser Werte kein Problem darstellen.


                          Könnte mir da mal jemand ein Beispiel geben ?

                          Danke

                          Kommentar


                          • #14
                            Das Thema ist eigentlich nicht so kompliziert wie es scheint, lese dir
                            das Ganze mal in Ruhe durch, nicht zu schnell überfliegen.

                            - zu 1.: wann tritt diese Update in Aktion (bisher wegen lft>V_RGT immer überprungen):
                            UPDATE node
                            SET lft = lft + 2
                            WHERE root_id = V_ROOT_ID
                            AND lft > V_RGT;

                            nun um das raus zu finden, füge 2 zusätzliche DS zu dem Bsp. ein und zwar:
                            1. Antwort auf A
                            2. Antwort auf B => hier wird lft = lft +2 upgedated, damit die Antwort
                            auf B dazwischen geschoben werden kann.

                            - zu 2.: wo liegt das Problem? bei einer Antwort (z.B auf A) gehts du hin
                            und holst die Zahlenpaar und root_id aus der DB raus, das ist gemeint.

                            Kommentar


                            • #15
                              Hallo,

                              also ich frage mich gerade, ob nested sets wirklich das richtige für mich sind.

                              Die haben zwar ein paar große Vorteile gegenüber einer einfachen Datenstrruktur mit Vaterzeiger aber wenn ich die nested sets für Menüs einsetzen möchte und möchte im Nachinein noch ein paar Menüpunkte einfügen ist das ne Menge Arbeit.

                              Was meint ihr dazu ?

                              Danke

                              Kommentar

                              Lädt...
                              X