Navigation mit unendlich vielen Ebenen
calconeon
- php
1 Tom
Ich habe zurzeit ein großes Problem:
Ich will für eine Homepage eine Navigation ermöglichen, die beliebig viele Ebenen besitzt UND administriert werden kann. Ich möchte dabei auf rekursive Abfragen verzichten.
as ich zur Zeit habe ist folgende MySQL-Tabelle nav
id | id_sub | ebene | pos
(auf das nötigste beschränkt)
Die Anzeige habe ich soweit hinbekommen und die Inhalte sind auch komplett. Mit einer einzigen Abfrage, die Formatierung erfolgt über Ebenen (der Name der CSS-Klasse wird dynamisch erzeugt, bei Bedarf adde ich die Klasse für die nächste Ebene)
Die Sortierung: ORDER BY id_sub,pos
Das Problem: Ich möchte das ganze auch dynamisch verschieben können. Das funktioniert soweit, aber nur bei den Einträgen, die einem Hauptpunkt zugeordnet sind.
Das ist ja auch logisch, weil ja zuerst nach id_sub sortiert wird. Das geht auch nicht anders, weil die Inhalte der Spalte pos nach folgendem System ingetragen werden:
id | id_sub | ebene | pos
01 | 00 | 01 | 01
02 | 01 | 02 | 01
03 | 01 | 02 | 02
04 | 00 | 01 | 02
05 | 00 | 01 | 03
06 | 05 | 02 | 01
07 | 05 | 02 | 02
und so weiter. Irgendwie finde ich jedes andre mögliche System unangemessen.
Ich habe mich nun über Nested Sets informiert, habe es auch einigermaßen verstanden, aber besonders dynamisch ist das ja nicht...
Kann mir jmd. ein Denkanstoß geben oder gibt es irgendwo im Netz was, was ich übersehen hab?
Bin dankbar für alle Vorschläge...
Grüße
Hello,
Ich will für eine Homepage eine Navigation ermöglichen, die beliebig viele Ebenen besitzt UND administriert werden kann. Ich möchte dabei auf rekursive Abfragen verzichten.
Dann benötigst Du nur eine Limitierung der Elemente pro Ebene uns einen unendlich langen Index-String.
Ich denke, dass da Rekursion billiger ist, zumal man nicht immer alle Ebene gemeinsam eingeblendet halten muss.
Auch für Bestimmung von Rechten, Vererbung und Filterung muss man dann nur immer in einem Pfad nach oben laufen, nicht in allen.
Harzliche Grüße aus http://www.annerschbarrich.de
Tom