Moin!
Datensätze in einer Datenbank sind mit einer ID und einer parentID ausgestattet. ID ist der autoincrement-Wert und dient zur Identifikation eines Menüeintrages. Dieser Menüeintrag hat Untermenüpunkte.
Ich möchte nun alle IDs der Untermenüpunkte auslesen die zum Hauptmenüpunkt gehören (die bei denen parentID gleich der ID des Hauptmenüpunktes ist).
Des weiteren wiederunm auch alle IDs die als parentID die ID der Untermenüpunkte erster Ebene haben.
Es ist aus Performancegründen hinsichtlich der Datenbank sehr sinnvoll, jedem Datensatz noch ein zusätzliches Feld für die Zugehörigkeit zum Hauptmenüpunkt zu geben.
Du selektierst dann alle Datensätze, die zum Hauptmenüpunkte gehören, und kannst das DB-Ergebnis dann mit PHP in eine rekursive Datenstruktur einsortieren lassen.
Eventuell hilfreich wäre auch noch ein Datenfeld "Tiefe", welches den Abstand des Datensatzes von seiner Wurzel enthält. Diese zwei zusätzlichen Felder sind zwar im Prinzip redundant, da die darin enthaltenen Informationen sich auch direkt aus der Tabelle ermitteln lassen könnten, aber relationale Datenbanken sind nur ganz schlecht auf rekursive Datenstrukturen eingerichtet und bestrafen die Abwesenheit von Redundanzinformationen mit der Notwendigkeit, viele einzelne Abfragen machen zu müssen - welche dann wiederum viel Performance kosten und nur sehr kleine Ergebnismengen bringen - also ein schlechtes Aufwand-Ergebnis-Verhältnis haben.
- Sven Rautenberg
My sssignature, my preciousssss!