Hallo!
Ich habe mich einmal durch sämtliche Forumsbeiträge durchgewälzt um mir ein Bild darüber zu mache wie ich eine Baumstruktur in eine Datenbank speichere und auslese. Aber irgendwie verstehe ich das einfach nicht. Vielleicht kann mir wer einmal die Grundfunktionsweise etwas näherbringen.
Das habe ich aus einem alten Forum Thread:
---------------------------------------------------------------
ID ParentID FirstChildID NextID Text
1 0 2 4 h2: Kapitel 1
2 1 0 3 item1: Abschnit 1 zu Kapitel 1
3 1 0 0 item2: Abschnit 2 zu Kapitel 1
4 0 5 0 h2: Kapitel 2
5 4 0 6 item3: : Abschnit 1 zu Kapitel 2
6 4 0 0 item4: : Abschnit 2 zu Kapitel 2
Je nach DB-Engine soll anstelle des Werts 0 der Wert 'null' (für nicht definiert, != Zahl 0) verwendet werden.
Die Bedeutung der Felder:
ID: Eindeutiger Wert für jeden Datensatz.
ParentID: ID des hierarchisch übergeordneten Elementes (Knoten). Falls ParentID 'Null' ist, dann ist das Element in der obersten Hierarchistufe.
FirstChildID: ID des ersten darunterliegenden (Kind-)Elemenentes. Falls FirstChildID 'Null' ist, befinden sich keine Kind-Elemente unter dem Element. Das Element ist ein sog. Blatt des Baumes (=> also kein Knoten).
NextID: ID des nächsten Elementes in derselben Hierarchiestufe. Mit FirstChildID und NextID wird die Sortierreihenfolge innerhalb eines Astes festgelegt. Falls NextID 'Null' ist, ist es das letzte Element innerhalb des Astes.
Text: Beliebiges Feld, das Informationen über das Element enthält. Es sind hier auch mehrere Felder möglich.
---------------------------------------------------------------
Wie zb schaffe ich es jetzt den ganzen Baum auszugeben, inklusive aller geöffneten Unterknoten?
Ich bin das Szenario jetzt schon 100e male durchgegangen und immer wieder verlaufe ich mich in irgendeinen Zweig aus dem ich dann nicht mehr herauskomme(die Baumstruktur ist natürlich viel umfangreicher und soll dynamisch veränderbar sein).
Laut dem Beispiel von Henryk Plötz mit dem Threadbasierenden Forum braucht man nach dem Auslesen aus der Datenbank zwei 2 Dimensionale Arrays (eines geordnet nach ID und eines geordnet nach FirstChild) aber damit komme ich nicht zurecht, denn dann gehe ich immer dem 1.besten Childknoten nach bis ich irgendeinmal anstehe.
Ich habe aber keine Ahnung wie ich das realisieren könnte, dass ich den ganzen Baum nach hierarchischer Ebene durchlaufe.Ich meine damit, wenn der Baum so aufgebaut ist wie ein Binärbaum, der von oben nach unten immer verzweigter wird, dass ich immer Ebene um Ebene durchlaufe bis ich ganz durch bin - so kann ich mich nicht in einen enzelnen Ast verlaufen.
Ist mein Denkansatz überhaupt richtig oder denke ich zu kompliziert?
Grüsse,
Daniel