NestedSet - Teilbaum verschieben

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

  • NestedSet - Teilbaum verschieben

    Hallo an alle! Ich arbeite mit PHP, MySQL und einem NestedSet-System (geschrieben von Arne Klempert) um Daten hierarchisch zu speichern. Jetzt suche ich eine Funktion, mit der ich einen Teilbaum komplett in einen anderen Baum verschieben kann.

    Wenn ich also habe:

    Früchte
    -Südfrüchte
    --Orange
    --Zitrone
    -Beerenfrüchte
    -Gemüse

    und den Baum "Südfrüchte" in "Gemüse" verschieben will (ich weiss, ist nicht sehr logisch, nur des Beispiels wegen)

    soll es so aussehen:

    Früchte
    -Gemüse
    --Südfrüchte
    ---Orange
    ---Zitrone
    -Beerenfrüchte

    Die Lösung müsste eigentlich rein mathematischer Natur sein, nur fällt mir absolut nichts ein!

    http://www.sitepoint.com/article/hie...ata-database/2

    Hier noch mal eine Seite mit einem Bild, wo ein NestedSet-Baum abgebildet ist.
    Für eine fertige Funktion oder einen Tip wäre ich sehr dankbar.

  • #2
    2 Arbeitschritte:
    - einfügen und
    - löschen
    mehr ist das nicht, wo ist das Problem?

    Kommentar


    • #3
      Schön vereinfacht, aber in diesen 2 Schritten verbergen sich ja noch andere Dinge. Beim Einfügen muss ich ja einen Teilbaum einfügen und nicht bloß ein einzelnes Blatt. Ich weiss jedoch nicht wie.

      Kommentar


      • #4
        ja, aber wenn du die Info über: lft, rgt und wurzel wissen, was notwendige Voraussetzungen sind, dann sollte doch keine Probleme geben.

        - tabelle sperren
        - bestehende lft verschieben
        - bestehende rgt verschieben
        - insert durchführen
        - tabelle entsperren

        ist zwar aufwendig, wenn du komplizierte Baumstruktur hast, aber das ist halt so bei nestedsets.
        EDIT:
        das machst du für jedes Blatt, oder du denkst dir was aus (SQL-mässig) für diese Verschiebung
        Zuletzt geändert von asp2php; 12.07.2004, 15:47.

        Kommentar

        Lädt...
        X