Nested Set

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

  • Nested Set

    Hallo

    brauche mal einen Denkanstoß.

    Bin dabei eine Navigation mit Hilfe eines Nested Sets aufzubauen.
    Bearbeiten des NS funktioniert auch alles nur bei der ausgabe komme ich nicht weiter.

    Ich möchte das in einer Baumansicht ausgeben das aber nur den gewählten Baum abschnitt anzeigt mit einer Ebene darunter und die
    anderen Ebenen geschlossen bleiben.

    Ich weiß nicht genau ob das ganze über eine MySQL Abfrage zu lösen ist oder mit mehreren Funktionen in PHP.

    Versuche mal ein Beispiel darzustellen was ich meine:

    Orginal Nested Set Baum

    A
    |--B
    |...|--C
    |...|--D
    |.......|--E
    |
    |--F
    ....|--G
    ....|
    ....|--H
    ........|--I
    ........|...|--J
    ........|...|...|--K
    ........|...|
    ........|...|--L
    ........|
    ........|--M


    Wenn ich B auswähle soll es so aussehen:

    A
    |--B
    |...|--C
    |...|--D
    |
    |--F


    Es sollen alle Ebenen gleich B angezeigt werden
    und die ersten Ebenen unter B

    Das gleiche noch mal nur mit H als auswahl:

    A
    |--B
    |
    |--F
    ....|--G
    ....|
    ....|--H
    ........|--I
    ........|
    ........|--M

    Die Punkte bitte ignorieren stehen für Leerzeichen die vom Board
    gelöscht werden.

    Danke für jeden Ratschlag der mir weiter hilft!

  • #2
    Folgende Idee:


    Mysql:

    ---------------------
    |....Navigation....|
    ---------------------
    |....ID.................|
    |....Bezeichn.......|
    |....Link..............|
    |....Position.......|
    |....Untegeord...|
    |....Level...........|
    ---------------------


    Eintrag A sieht dann so aus

    INSERT INTO
    ....Navigation(
    ......Bezeichnun,
    ......Link,
    ......Position,
    ......Level)
    ....VALUES(
    ......'A',
    ......'http://www.google.de',
    ......1,
    ......0)


    Ein untergeordneter Punkt hat dann eben das Level 1+

    Die Anfrage an Mysql ist auch recht leicht

    SELECT
    ....*
    FROM
    ....Navigation
    WHERE
    ....Level=0
    ....OR Untegeordnet=1 (Id des geöffneten Oberpunktes)
    ORDER BY
    ....Position
    Wenn die Tatsachen nicht mit der Theorie übereinstimmen –

    um so schlimmer für die Tatsachen.

    Kommentar


    • #3
      kein php problem. *move* 2 sql
      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 |


      Kommentar


      • #4
        Und es ist kein Nested Set...

        http://www.developersdex.com/gurus/articles/112.asp

        Kommentar


        • #5
          Original geschrieben von prego
          Und es ist kein Nested Set...

          http://www.developersdex.com/gurus/articles/112.asp
          Warum ?

          Weil der Baum nicht so dargestellt ist wie auf deiner angebenen Seite.

          Ich verwende so eine Tabellen Strucktur.

          Es geht mir hauptsächlich um das abrufen der Daten!

          Kommentar


          • #6
            nested set heist, das es nur eine tabelle gibt, in der jeder eintrag eine parent-left und eine parent-right id hat. diese ids müssen beim verschieben und dergleiche immer geändert werden.... Sie bilden quasi einen Kreis...

            der Link hier könnte dein Problem lösen, wenn du denn ein nested set hast... http://www.klempert.de/php/nested_se...ples/level.php - und der hier erklärt was nested sets sind noch einmal ein wenig besser http://kris.koehntopp.de/artikel/sql-self-references/

            Kommentar

            Lädt...
            X