Dabei seit: 04.01.2011 Ort: - Alter: - Geschlecht: -
Verfasst Mo 01.08.2011 10:20 Titel
pixelpapst303 hat geschrieben:
im grunde brauchst du in deinem beispiel doch "nur" jeweils das level vom aktuellen eintrag mit dem vom nächten eintrag vergleichen. in php sind da next() und current() - (arrayfunktionen) deine freunde.
wenn next dann größer current is, geht n ul auf. wenns kleiner is, ein ul zu. wenns gleich is passiert nüschts...
Nagut, dann schände ich mal diese Leiche...
Also, ich habe dasselbe Problem - ein nested set hierarchisch als Liste, geschachtelte Divs - whatever - auszugeben.
Deinen Vorschlag überprüfend bin ich zu dem Schluss gekommen: Nö.
(Klingt zwar gut, funktioniert aber nicht):
Dabei seit: 24.10.2007 Ort: - Alter: - Geschlecht: -
Verfasst Mo 01.08.2011 10:49 Titel
SELECT * ORDER BY LFT
Dann musste das ganze entweder: In eine rekursive Datenstruktur packen, oder halt den iterativen Weg gehen - was aber ein wenig mehr Brainfuck bedeutet und nicht wiederverwendbar ist, daher würde ich immer den ersten Weg gehen - die rekursive Datenstruktur ist einfacher zu durchwandern.
Kurzer Tipp: (n-1) level < n level, dann bist Du wohl im ersten Kindknoten von n-1. Ist n-1 level > n level, bist Du wohl mindestens eine Hierararchieebene hochgerutscht.
Dabei seit: 04.01.2011 Ort: - Alter: - Geschlecht: -
Verfasst Mo 01.08.2011 13:47 Titel
Danke, ich werde mich ranmachen und es versuchen.
Die Struktur ist doch dieselbe?! Nur hast du die lft/rgt bounds angegeben und ich die IDs - insofern ist es wohl ein Homomorphismus
bacon hat geschrieben:
SELECT * ORDER BY LFT
Dann musste das ganze entweder: In eine rekursive Datenstruktur packen, oder halt den iterativen Weg gehen - was aber ein wenig mehr Brainfuck bedeutet und nicht wiederverwendbar ist, daher würde ich immer den ersten Weg gehen - die rekursive Datenstruktur ist einfacher zu durchwandern.
Kurzer Tipp: (n-1) level < n level, dann bist Du wohl im ersten Kindknoten von n-1. Ist n-1 level > n level, bist Du wohl mindestens eine Hierararchieebene hochgerutscht.
Dabei seit: 04.01.2011 Ort: - Alter: - Geschlecht: -
Verfasst Mo 01.08.2011 14:03 Titel
bacon hat geschrieben:
Was soll'n die IDs denn da bringen? Insofern scheint mir das eher ein Idiotismus zu sein
Ah, seit wann sind denn die bounds die Bezeichner der Variablen?
Es wird ein Knoten dargstellt - ich nenne den wie ich will...
Btw.
ich habe mich deines Vorschlags angenommen und nach geringer Prüfung festgestellt, dass es zu klappen scheint - allerdings habe ich die korrektheit noch nicht bewiesen, sondern nur ein Ergebnis gesehen und dann auf alle hochgerechnet
Insofern - danke nochmal
Zuletzt bearbeitet von weltio am Mo 01.08.2011 14:14, insgesamt 2-mal bearbeitet
Dabei seit: 08.02.2012 Ort: - Alter: - Geschlecht: -
Verfasst Mi 08.02.2012 15:45 Titel
Habe mich soeben auch mit dem Thema beschäftigt. Die Lösung ist viel einfacher als man zunächst denkt.
Es braucht nicht einmal ein Level. Ganz einfach den Baum nach der LEFT-Spalte sortieren.
Danach alle Einträge der Reihe nach durchlaufen und dabei den aktuellen Left-Wert mit dem vorhergehenden vergleichen. Ist die Erhöhung = 1, neues <ul> öffnen, ist sie = 2, verbleiben wir auf der gleichen Ebene. Ist sie grösser als 2, schliesse so viele <ul>s wie der aktuelle LEFT-Wert minus der vorhergehende LEFT-Wert minus zwei.
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst an Umfragen in diesem Forum nicht mitmachen.