Ansatz f. Erweiterung des Nested sets

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

  • Ansatz f. Erweiterung des Nested sets

    hi...

    ich habe meine navigation mit hilfe des nested sets - modells erstellt. nun möchte ich ja vielleicht auch mal einen menüpunkt neu hinzufügen.
    Kann mir da jemand einen Ansatz nennen, wie ich das lösen kann mittels den sql-abfragen?
    es müssten ja ab dem wert wo eingefügt wird alle rechts- und links-werte erhöht werden.

  • #2
    Das steht auch in dem Artikel drin, den du schon gelesen hast!!!

    *verschieb* to BS

    Kommentar


    • #3
      Original geschrieben von TobiaZ
      Das steht auch in dem Artikel drin, den du schon gelesen hast!!!
      den artikel habe ich gelesen und auch die abfragen ausgeführt, nur leider hauts bei mir dann alles durcheinander.

      wenn du willst kann ich dir mal meine tabelle posten und dann die sql- anweisung, vielleicht hab ich auch was falsch gemacht

      Kommentar


      • #4
        wahrscheinlich letzteres. hab mir das ding früher selber mal angesehen. da war ein kleiner dreher drin (von mir oder vom autor???) aber ansonsten läuft das wunderbar!!!

        Kommentar


        • #5
          hab erstmal noch ne frage zum verständnis:

          in dem tut wird von folgendem gesprochen:

          "ein neues Blatt auf dem gleichen Level, rechts von einem vorhandenen Knoten"

          "ein neues Blatt auf dem gleichen Level, links von einem vorhandenen Knoten"

          was ist mit links und rechts gemeint?

          und muss ich die beiden abfragen von dort, also für links und rechts nacheinander ausführen? ic hhabe mal die anweisung für rechts ausgeführt und da hats mir einiges zerhauen

          Kommentar


          • #6
            poste mal die anweisungen, die da stehen

            bei mir hat's damit funktioniert, da machst du anscheinend was flasch *g*
            Ich denke, also bin ich. - Einige sind trotzdem...

            Kommentar


            • #7
              was ist mit links und rechts gemeint?
              Hast du die Frage nicht schonmal gestellt?

              da gibts ne spalte rgt und lft.

              Kommentar


              • #8
                ok das hab ich jetzt verstanden. nur was ist, wenn ich zum beispiel folgendes hab:

                root
                |_______A
                |________A1
                |_____________A2

                jetzt möchte ich ein ganz neues level einfügen. zum beispiel unter A2 kommt A3 dran. funktioniert das auch mit der abfrage?

                hier mal meine Tabelle und die abfrage:

                V_ROOT_ID=1, V_BROTHER_RGT=4

                LOCK TABLES node WRITE;
                # make room for the new nodeUPDATE node
                SET lft = lft + 2 WHERE root_id = V_ROOT_ID AND lft > V_BROTHER_RGT;
                UPDATE node SET rgt = rgt + 2 WHERE root_id = V_ROOT_ID AND rgt > V_BROTHER_RGT;
                # insert the sibling
                INSERT INTO node ( root_id, payload, lft, rgt ) VALUES ( V_ROOT_ID, 'a right brother', V_BROTHER_RGT + 1, V_BROTHER_RGT + 2 );
                UNLOCK TABLES;


                INSERT INTO node VALUES("1", "1", "Root", "1", "28");
                INSERT INTO node VALUES("7", "1", "G", "11", "14");
                INSERT INTO node VALUES("2", "1", "B", "2", "9");
                INSERT INTO node VALUES("3", "1", "C", "3", "4");
                INSERT INTO node VALUES("4", "1", "D", "5", "8");
                INSERT INTO node VALUES("5", "1", "E", "6", "7");
                INSERT INTO node VALUES("6", "1", "F", "10", "27");
                INSERT INTO node VALUES("8", "1", "UU", "12", "13");
                INSERT INTO node VALUES("9", "1", "H", "15", "26");
                INSERT INTO node VALUES("10", "1", "I", "16", "23");
                INSERT INTO node VALUES("11", "1", "J", "17", "20");
                INSERT INTO node VALUES("12", "1", "K", "18", "19");
                INSERT INTO node VALUES("13", "1", "L", "21", "22");
                INSERT INTO node VALUES("14", "1", "M", "24", "25");

                EDIT:

                meine obere frage hat sich erledigt. stand mit in dem tutorial drin unter einfügen.
                jedoch wenn ich mein beisiel von oben ausführe kommt weiterhin alles durcheinander

                Zuletzt geändert von lx-club; 06.01.2004, 12:55.

                Kommentar


                • #9
                  hi...

                  ich hatte ja gestern schon mal folgendes geschrieben:

                  ich habe mir grad mal das tutorial angeschaut:

                  http://www.develnet.de/244.html

                  da wird von links und rechts gesprochen. kann es sein, das es manchmal gar nicht geht einen menupunkt rechts oder links eines knotens neu anzulegen, weil ja da schon einer da ist? oder hab ich da was falsch verstanden? ich überleg nämlich im hinblick auf ein editieren der navigation über ein formular.

                  ich habe die abfragen dort probiert und wenn ich (lt. der abbildung dort) rechts von dem punkt C was einfügen möchte, dann zerhaut es mir die gesamte tabelle.
                  Ich denke es liegt daran, das es ja rechts von C schon den Punkt D gibt.
                  Möchte ich links von C was einfügen, dann klappts ohne probleme.

                  Wäre schön wenn jemand auf die obigen Fragen ne antwort für mich hätte

                  Kommentar


                  • #10
                    PEAR extension

                    Hallo,

                    unter pear gibt es eine Klasse zum manipulieren von nestedset bäumen --> sehr zu entpfehlen

                    pear.php.net
                    oder

                    NestedSet Klasse API

                    Kommentar

                    Lädt...
                    X