Generer <list> menu udfra db-baseret træmenu.
Hej eksperterJeg leder efter en nem og pæn måde at transformere et træbaseret menusystem fra en MySQL tabel til en html-liste form!
Strukturen af tabellen er:
#
# Struktur dump for tabellen `menu`
#
CREATE TABLE menu (
id int(10) unsigned NOT NULL auto_increment,
parentId int(10) unsigned default NULL, //evt. forælder id - null for hovedpunkt
priority smallint(6) NOT NULL default '0', //bruges til rækkefølge af menupunkter
title varchar(255) NOT NULL default '', //menupunktets titel
description varchar(255) NOT NULL default '', //beskrivelse af menupunktet
url varchar(255) NOT NULL default '', //menupunktets url
PRIMARY KEY (id),
KEY pid (parentId)
) TYPE=MyISAM COMMENT='Tree based menu system';
Eksempel på dump fra tabellen:
#
# Data dump for tabellen `menu`
#
INSERT INTO menu VALUES (1, NULL, 0, 'Personal', 'Personal stuff', '?cid=5');
INSERT INTO menu VALUES (2, NULL, 0, 'Study', 'Study related stuff', '?cid=7');
INSERT INTO menu VALUES (3, 1, 0, 'Guestbook', 'Sign and read the guestbook', '?cid=8');
Dvs. her har vi to hovedpunkter samt et underpunkt, hvilket gerne skulle give anledning til følgende liste i html:
<ul>
<li>Personal</li>
<ul>
<li>Guestbook</li>
</ul>
<li>Study</li>
</ul>
-eller:
<ul>
<li>Personal</li>
<ul>
<li>Guestbook</li>
</ul>
</ul>
<ul>
<li>Study</li>
</ul>
Ideen er at det script/den funktion der konverterer menuen til html-kode skal fungere ligegyldigt, hvor mange nestede menupunkter der findes - den skal bare lave listestrukturen efter ovenstående logik.
Jeg tror problemstillingen kan løses meget nemt og "pænt", hvis man lige har den rigtige ide - og jeg synes mine egne ideer har været temmeligt dårlige indtil videre - der *må* være en pæn løsning til dette problem!
Jeg overvejede lidt om man måske kunne bruge HTML_Menu fra PEAR, men kunne ikke lige få det til at hænge sammen... (http://pear.php.net/package/HTML_Menu)
Håber på nogle gode konstruktive forslag!
Mvh
Tommy Ipsen
