Adjazenzliste - mit << Prev und Next >> - durchwandern

NTDY

Erfahrenes Mitglied
Ich habe bspw. folgenden Menübaum in Form einer Adjazenzliste in einer Datenbank abgespeichert

Code:
id | pid | level
 1 |  -  | -
 2 |  1  | 0
 3 |  2  | 0
 4 |  1  | 1
 5 |  4  | 0
 6 |  5  | 0
 7 |  5  | 1
 8 |  4  | 1
 9 |  8  | 0
10 |  8  | 1
12 |  1  | 2
13 | 12  | 2
14 | 12  | 0
15 |  1  | 3

1
|-2
|  |-3
|
|-4
| |-5
| | |-6
| | |-7
| |
| |-8
|   |-9
|   |-10
|   |-11
|
|-12
| |-13
| |-14
|
|-15

Nun möchte ich gern diesen Baum so durchlaufen, dass ich auf der aktuellen Seite immer die Möglichkeit habe eine Seite zurück zu gehen und eine Seite vor zu gehen. (Bspw. Bin ich bei der ID=12 angelangt, kann ich zurück auf Seite mit ID=4 und vor zur Seite mit ID=13.

Nun habe ich folgende Überlegungen angestellt, um die Varianten durchzugehen. Allerdings hänge ich gedanklich gerade an Punkt 3 fest. Kann mir jemand einen Hinweis geben wie ich alle Fälle erschlage? Gibt es irgendwo schon fertige Implementierungen für solch ein Problem? Oder ist der Ansatz komplett falsch?

Code:
1. if (Kinder vorhanden) -->nimm das erste Kindelement
2. if (keine Kinder UND Geschwister nach mir) --> Nimm Geschwister
  // hier ist gemeint, dass ich die Level+1 rechne
  // Bsp. ID=9 mit Level 0 und nach mir kommt ID=10 mit Level 1
3. if(keine Kinder UND keine Geschwister) --> gehe eine Ebene hoch .. (und dann?)
 
Wäre es eine Möglichkeit, dass, wenn keine Kind- und Geschwisterknoten vorhanden sind, die entsprechende Schaltfläche entweder ausgeblendet oder gesperrt wird?
 
Der Gedanke war, dass der User durch eine Webseite wie durch ein Buch durchnavigieren soll. Also ist ein Ausblenden der Schaltfläche nicht die Lösung. :-(
 
Zurück