dynamisches Menu

low-group

Erfahrenes Mitglied
Hallo,

Wie kann ich mir ein dynamisches Menu anzeigen lassen, sodaß die Submenupunkte nur angezeigt werden, wenn man auf der Seite des Oberlinks ist, oder auf einer der Submenupunkte des Oberlinks?

Meine Einträge in der DB sind mit ID und parentID eingetragen und aufrufen tu ich das menu wie folgt:

PHP:
 $result = $db->query("SELECT * FROM bb".$n."_menulink WHERE parentid=0 ORDER by linkorder ASC");
while($menu = $db->fetch_array($result)){
$id = $menu['id'];
$name = $menu['name'];
$link = $menu['link'];
$parentid = $menu['parentid'];
eval("\$menubit .= \"".$tpl->get("menubit")."\";");

}

Nun müßte ja eine zusätzliche Abfrage vor dem letzten } aufgerufen werden mit den Unterpunkten. Im Link selber wird jede Seite mit ?site=$id aufgerufen.

Irgendwie komme ich nicht weiter.
 
was hat das mit Sessions zu tun?

mein menu z.b.:

-Link1
-Link2
---Link21
---Link22
-Link3
-Link4
-Link5

jetzt sollen die Links Link21 und Link22 nur sichtbar sein, wenn man auf der Seite des Links Link2, Link21 oder Link22 ist.

Die einzelnen Seiten rufe ich über die ID des Links auf, also ?site=$id
 
Die Suche nach parentid gibt zum Beispiel diesen Beitrag:
http://www.tutorials.de/tutorials178218.html&highlight=parentid
Da steht eigentlich alles drin, um so ein Menü zu bauen, weitere Links sind auch enthalten.
Die Grundvarianten sind zum einen Deine mit parentID, welche da bis zu Ende durchgespielt wird und Nested Sets, die etwas mühsamer sind, aber schneller beim auslesen, dafür langsamer und schwieriger beim Eintragen.
 
Die einfache Ausgabe ist ja nicht das problem, nur die Anzeige, so wie ich es will, also nur wenn man in der jeweiligen Kategorie drinne ist, wie oben beschrieben bekomme ich nicht hin.
 
Genau das ist dort beschrieben, mit mehreren Codebeispielen.

Der Trick ist, die Menüstruktur zu übergeben (Post 11 im Link).

Wenn Du die IDs nicht mit übergeben willst, kannst Du sie Dir auch Ebene für Ebene rekursiv aus der DB holen. Ist aber wohl nicht besonders effizient. Aber als Workaround, um die IDs im Skript selbst zu bekommen, ungefähr so:

Code:
//ein bisschen Pseudocode, da hier im Editor gepostet

$ids=array();
function getparents($id,$ids) {
  //query SELECT id,parentID FROM menustruktur WHERE id=$id;
  //$row = mysql fetch array 
  $ids[]=$row['id'];
  if ($row['id']!=0) {
    return getparents($row['parentID'],$ids);
  } else {
    return implode(',',$ids);
  }
}

$parentIDsAsKeywordINString = getparents($_GET['id'],$ids);

Ich würde aber nie behaupten, dass dies performant ist :(
 
Zurück