Mailinglisten-Archive |
Hallo PHP'ler, Wir (Yannik und Ich...) suchen im moment nach einer schlauen Möglichkeit ein (relativ großes und dynamisches) Menü aufzubauen. Da es sich nur extrem selten, aber recht häufig abgerufen wird, hatten wir die "Nested Sets" ins Auge gefasst. Das funktioniert auch eigentlich schon recht gut. Den kompletten Baum lassen wir uns ausgeben mit SELECT n.title,COUNT(*)-1 AS level FROM kategorien AS n,kategorien AS p WHERE n.links BETWEEN p.links AND p.rechts GROUP BY n.links ORDER BY n.links nun stellt sich aber folgendes Problem: Da der Baum ziemlich groß werden kann (min. mehrere hundert Einträge) können wir nicht alles ausgeben. Idee war folgendes: Wir geben nur alle Knoten vom Root bis zum selektieren (ID haben wir) und jeweils deren Brüder sowie die direkten Kinder des selektieren aus. Mal anschaulich...wir haben diesen Baum (als Baumstruktur): 1 >2 >>3 >>>4 >>>5 >>>>6 >>7 >>>8 >>9 >10 >>11 >12 und wir selektieren die Nummer 3, dann sollte es so aussehen: 1 >2 >>3 >>>4 >>>5 >>7 >>9 >10 >12 1, 2 und 3 sind der direkte Weg vom Root zur 3 4 und 5 sind direkte Kinder von 3 7 und 9 sind Brüder von 3 10 und 12 sind Brüder von 2 Ich hoffe das ganze ist klar geworden :-) Wie würde dazu der Query aussehen? mfg Gereon
php::bar PHP Wiki - Listenarchive