Menü

Arndtinho

Erfahrenes Mitglied
Hallo,

ich denke mal, dass mit den Menüs ist ein schon oft behandeltes Thema, aber ich brauche trotzdem Eure Hilfe.
Also, ich möchte ein Menü erstellen (Db-basierend), bei dem durch Klick auf das Menüitem die Subitems aufgeblättert werden.
Folgende Struktur hat die DB:

Tabelle main (id, name)
Tabelle sub (id, mid, name)

-> mid entspricht id in der Tabelle 'main'

Dann habe ich noch zwei Abfragen:

PHP:
// MenuItems anzeigen
$sql = "SELECT * FROM main";
$res = mysql_query($sql);
while($row = mysql_fetch_array($res))
{
    echo "<a href=\"".$_SERVER['PHP_SELF']."?mid=".$row["id"]."\">".$row["mitem"]."</a><br>";
}

// SubItems entsprechend des MainMenuItem
$mid = $_REQUEST['mid'];
$sql = "SELECT * FROM sub WHERE mid = '".$mid."'";
$res = mysql_query($sql);
while($row =  mysql_fetch_array($res)) {
    echo "&nbsp;&nbsp;&nbsp;<a href=\"".$_SERVER['PHP_SELF']."\">".$row["name"]."</a><br>";
}
Soweit so gut. Die Abfragen funktionieren und im Moment werden die SubItems unterhalb der MainItems angezeigt. Ok, versteh ich ja auch. Nun habe ich etliche Tutorials gelesen und ausprobiert, aber ich bekomme es einfach nicht gebacken das ich folgende Anzeige erhalte:
Code:
MenuItem1
    SubItem1_1
    SubItem1_2
MenuItem2
    SubItem2_1
MenuItem3
    SubItem3_1
    SubItem3_2
    SubItem3_3
Wie löst man denn sowas?

Gruß,
Arndtinho
 
Ich würde einfach die Menü-Items auslesen (while_Schleife beispielsweise).
Bei jedem Schleifendruchlauf prüfst du dann ob zum aktuellen Menüpunkt unterpunkte existieren. Wenn ja, auslesen und ausgeben.

Schematisch so:

PHP:
while( $row = mysql_fetch_assoc($sth) )
{
  //Menüpunkt ausgeben
  subitems($row['ID'];
}


//Funktion für Unterpunkte
function subitems($itemid)
{
  //Hat $itemid Unterpunkte
  if( "JA" )
  {
    //auslesen und ausgeben
  }
}
 
Ok, hab es so wie Du gesagt hast hinbekommen.
Wie funktioniert jetzt so eine Klicksache? Also Klick auf MenüItem und die Subitems werden aufgeblättert?

Gruß,
Arndtinho
 
Du übergibst wie auch immer sei dir überlassen, die ID oder so des geklickten Menüpunkts an das Menüskript.
In der gezeigten Schleife rufst du die Funktion subitems nur dann auf, wenn die ID des aktuellen Menüpunktes mit der ID des geklickten Menüpunkts identisch ist.

Beipisl per $_REQUEST['clicked'] empfängst du die ID des Menüpunktes der gekliickt wurde. Dann:

PHP:
while( $row = mysql_fetch_assoc($sth) )
{
  //Menüpunkt ausgeben
  if( $row['ID'] == $_REQUEST['clicked'] )
                 subitems($row['ID']);
}
 
Zurück