[PHP] Menü über MySQL-Abfragen erstellen

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Antworten
FighterBC
Mitglied
Beiträge: 83
Registriert: 09.10.2003 18:21
Wohnort: BC

[PHP] Menü über MySQL-Abfragen erstellen

Beitrag 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!
Benutzeravatar
Banger
Ehemaliges Teammitglied
Beiträge: 375
Registriert: 03.05.2005 21:53
Wohnort: Düsseldorf
Kontaktdaten:

Beitrag 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>';
Antworten

Zurück zu „Coding & Technik“