phpbar.de logo

Mailinglisten-Archive

[php] Nested Sets

[php] Nested Sets

Jörn Grube jg at team-spandau.de
Fre Nov 9 15:30:37 CET 2007


Genau die Idee war mir auch gekommen, bin gerade dabei, das zu testen 
bzw. mein dummes Hirn anzustrengen, das auf die Reihe zu bringen :) Ich 
sag Bescheid, wenn ichs hab.
Danke erstmal und liebe Grüße aus Berlin Jörn

Michael Dunkel schrieb:
> Sorry mein fehler,
> 
> über das problem hatte ich mir auch lange gedanken gemacht, aber 
> eigentlich ist es ganz einfach, du speicherst dir immer das level vom 
> vorgänger tust das dann mit dem aktuellen vergleich, sind sie gleich 
> dann bist du in der gleichen ebene, wenn es um eins kleiner ist musst du 
> ein ul zu machen, wenns gößer ist ein ul auf
> oder noch ganz anders, du kannst auch divs benutzen und deine 
> einrückungen so bestimmt zb. 10px * level.
> 
> 
> Gruß
> Micha
> 
> Jörn Grube schrieb:
>> Das hab ich, steht ja auch so in dem genannten Artikel. Damit weiß ich 
>> aber nur, ob die Zeile, die gerade dran ist, ein Ast, ein Zweig oder gar 
>> nur ein Blatt ist. Damit weiß ich dann aber noch nicht, wie ich in der 
>> Ausgabe rauskriege, wo ich das jeweilige < ul > bzw. < /ul > schreiben 
>> muss. Denn speziell letzteres darf ja erst kommen, wenn alle Blätter 
>> durch sind, dann alle Zweige durch sind. Das Problem liegt also nicht in 
>> der DB-Abfrage, sondern wie ich das Ergebnis per PHP ausgebe. Und das 
>> auch noch mit korrektem HTML-Code. Aber ich denk, ich hab da eine Idee, 
>> mal sehen, ob das klappt :)
>>
>> Grüße aus Berlin Jörn
>>
>> Michael Dunkel schrieb:
>>   
>>> Hi, ich denke das hier ist das was du brauchst, das level gibt dir in 
>>> dem fall dann die tiefe an, sprich deine einrückungen
>>>
>>> SELECT     n.*,
>>>                         round((n.rgt-n.lft-1)/2,0) AS offspring,
>>>                         count( * ) -1 + ( n.lft >1 ) AS    level
>>>                 FROM     kategorie n,
>>>                        kategorie p
>>>                 WHERE n.lft    BETWEEN p.lft AND p.rgt
>>>                 AND (
>>>                         p.id != n.id
>>>                         OR n.lft =1
>>>                     )
>>>                 GROUP BY n.id
>>>                 ORDER BY n.lft
>>>
>>> Gruß
>>> Micha
>>>
>>>
>>> Jörn Grube schrieb:
>>>     
>>>> Es ließ sich nicht länger vermeiden, also hab ich mich mit Nested Sets 
>>>> beschäftigt. Nach der Lektüre dieses Artikels:
>>>> http://www.klempert.de/nested_sets/artikel/
>>>> hab ich das auch soweit kapiert (ist sooo schwer ja auch nicht).
>>>> Wobei ich nun aber doch ein Problem kriege, ist die Frage, wie ich das 
>>>> Ergebnis des Ganzen, also z.B. den kompletten Navigationsbaum in diese 
>>>> Form kriege:
>>>> Säugetiere
>>>>      Primaten
>>>>          Halbaffen
>>>>          Affen
>>>>      Nagetiere
>>>> Alles in eine einzelne Liste (oder Tabelle, aber wer will die schon 
>>>> noch) ist ja nicht schwer, nur muss ich ja in den Listen-Punkten wieder 
>>>> verschachtelte Listen erstellen und da fehlt mir im Moment ein wenig der 
>>>> Ansatz. Vielleicht kann mir mal jemand ein paar passende Stichwörter 
>>>> hinschmeißen, über die ich dann nachdenken kann :)
>>>>
>>>> Grüße aus Berlin Jörn
>>>>   
>>>>       
>>>     
>>   
> 
> 


php::bar PHP Wiki   -   Listenarchive