Seite 1 von 1

[PHP] Menü über MySQL-Abfragen erstellen

Verfasst: 11.08.2006 14:48
von FighterBC
Hallo,
ich komm grad irgendwie nicht weiter an meinem Menü, das ich für meine Webseite erstellen will...

Folgendes ist geplant...
Es soll eine Hauptkategorie (z.B. Allgemein) und eine Unterkategorie (z.B. Über uns) über die Datenbank generiert werden.

Ich habe 2 Datenbankeinträge:
menu_main und menu_sub

Jede Kategorie hat eine menuID (z.B. 1) und jede Unterkategorie auch, aber halt z.B. 1,1 für den ersten Eintrag in der Hauptkategorie.

Jetzt möchte ich folgendes.
Ich möchte die Hauptkategorie angezeigt haben. Darunter dann alle Einträge die mit der selben Zahl beginnen. z.B. 1 als Hauptkategorie 1,1; 1,2; 1,3 usw als Unterkategorie.
Dann bei der 2. Hauptkategorie 2... 2,1; 2,2; 2,3 usw.

Also dann soll es so Aussehen

Allgemein
- Startseite
- Über uns

Infos
- News
- Forum


das die Seite so generiert wird durch die Datenbankeinträge.

Wie kann ich das realisieren, das er aus 2 Datenbankeinträgen so ein Menü generiert, bekomme das irgendwie nicht hin?

Wäre für eine Antwort dankbar!

Verfasst: 11.08.2006 15:16
von Banger
Hier mal ein abstrahiertes Beispiel:

Code: Alles auswählen

/*
menu_main:
id_main int, primary key
sort int
desc_main varchar(64)

menu_sub:
id_sub int, primary_key
id_main int, index
sort int
desc_sub varchar(64)
link_sub varchar(255)
*/

$res0 = mysql_query('SELECT M.id_main
                          , M.desc_main
                          , S.desc_sub
                          , S.link_sub
                       FROM menu_main AS M
                       JOIN menu_sub AS S
                         ON S.id_main = M.id_main
                   ORDER BY M.sort, S.sort', $conn) or die(mysql_error($conn));

echo '<ol>';
$last_main = 0;
for($i=0; $d0 = mysql_fetch_array($res0, MYSQL_ASSOC); $i++) {
    if($d0['id_main'] != $lastmain) { 
        echo ($i ? '</ol></li>' : ''),'<li>',htmlentities($d0['desc_main']),'<ol>';
        $lastmain = $d0['id_main'];
    }
    echo '<li><a href="',htmlentities($d0['link_sub']),'">',htmlentities($d0['desc_sub']),'</a></li>';
}
mysql_free_result($res0);

echo '</ol></li></ol>';