Menu s kategoriemi

Potrebuju vytvorit menu. Po kliknuti na kategorii v menu se zobrazi vsechny podkategorie, to same po kliknuti na podkategorii. Kdyz kliknu na podkategorii nejnizsi urovne, zobrazi se jeji obsah (seznam polozek).

Mam tabulku se strukturou:

CREATE TABLE kategorie (
ident int not null primary key auto_increment,
nazev varchar(40),
uroven int,
od int,
do int
);

kde
nazev je jmeno kategorie,
uroven je uroven kategorie
priklad:
knihy (uroven1)
-vedecke(uroven2)
--matematika(uroven3)

Po kliknuti na matematika se tedy zobrazi vsechny knihy o matematice.

Kazda kniha ma svuj kod. Sloupce od, do oznacuji prave rozsah kodu pro danou kategorii.



Mate nekdo nejakej napad, jak na to menu? Staci princip nebo napad. Diky vsem.
<HTML>IMHO treba:

CREATE TABLE kategorie (
ident int not null primary key auto_increment,
nazev varchar(40),
uroven int,
);


kde hodnota "uroven" 1 az 100 bude uroven 1
100 - 200 uroven 2
200 - 300 uroven 3
....

je to jen napad narychlo reseni je plno a jiste i lepsi</HTML>
<HTML>moc jsem to nepochopil, cet jsem to dvakrat a uz vickrat nechcu :)

ale to masterovo reseni je na prvni pohled skarede, nezlob se, nic osobniho :)
... mozna jsem to nepochopil, ale vypada to, jako by z toho navrhu db bylo omezeni max. 100 polozek v jedne kategorii</HTML>
No ja jsem spis chtel princip kodu v PHP na tu moji puvodni tabulku jestli nejsem moc narocnej.


Zkusim se vyjadrit presneji:

CREATE TABLE kategorie (
id int NOT NULL PRIMARY KEY auto_increment,
zarazeni int NOT NULL,
nazev varchar(50) NOT NULL,
);


INSERT INTO clanky VALUES (1, 0, 'Knihy');
INSERT INTO clanky VALUES (2, 0, 'Noviny');
INSERT INTO clanky VALUES (3, 1, 'vedecke');
INSERT INTO clanky VALUES (4, 1, 'pocitace');
INSERT INTO clanky VALUES (5, 3, 'matematika');
INSERT INTO clanky VALUES (6, 3, 'jaderne elektrarny');
INSERT INTO clanky VALUES (7, 3, 'rostliny');
INSERT INTO clanky VALUES (8, 4, 'PHP');

2.sloupec tedy ukazuje, pod kterou nadkategorii patri

vysledny strom by mel byti zhruba:

+ Knihy
-----+ vedecke
---------- matematika
---------- jaderne elektrarny
---------- rostliny
-----+ pocitace
---------- PHP
+ Noviny

Cele by to melo generovat dle ID v zaznamech z databaze a v php se mel
zobrazit tento strom.


Takze potrebuju nejaky kod v PHP kterym ziskam ono menu. Snad je to dostatecne srozumitelne.
<HTML>ajo, ja to tusil ze nakonec dojdem k prochazeni stromove struktury :-)

ja bych to vycucnul z sql do nejakeho pomocneho pole (v kterem by byl jako ulozeny ten strom) a tam to uz muzes prochazet bud rekurzi nebo nejak pres zasobnik ... no ta rekurze je pekne intuitivni takze spis tak</HTML>
neviem, ci je toto dobry napad, ale teraz ma to tak narychlo napadlo.

Keby sa vytvorila jedna tabulka pre kazdu uroven. Cez url by sa potom predavali parametre http://bestweb.xy/index.php?uroven1=knihy&uroven2=vedecke&uroven3=.... A podla tychto parametrov by sa robili selekty z db.

V dokumente by sa vygenerovalo menu:
<ul>
<li>knihy</li>
<ul>
<li>vedecke</li>
<ul>
<li>kniha 1</li>
<li>kniha 2</li>
</ul>
<li>pocitace</li>
</ul>
</ul>

Generovanie menu treba este vyriesit.

Je to dost strapate riesenie, chcelo by to este ucesat :-), ale nejako takto by to mohlo fungovat.
<HTML>to je dynamicky neprakticke....

to mira: kdyz jsem to psal uz jsem byl v lihu :)

takze jinak....

opet IMHO:


CREATE TABLE kategorie (
ident int not null primary key auto_increment,
uroven int,
naduroven int,
nazev varchar(40),
);

INSERT INTO clanky VALUES (1, 0, 0, 'Knihy');
INSERT INTO clanky VALUES (2, 0, 0, 'Noviny');
INSERT INTO clanky VALUES (3, 1, 1, 'vedecke');
INSERT INTO clanky VALUES (4, 1, 1, 'pocitace');
INSERT INTO clanky VALUES (5, 1, 1, 'matematika');
INSERT INTO clanky VALUES (6, 1, 1, 'jaderne elektrarny');
INSERT INTO clanky VALUES (7, 1, 1, 'rostliny');
INSERT INTO clanky VALUES (8, 1, 2, 'PHP');

odpovida:

+ Knihy
-----+ vedecke
---------- matematika
---------- jaderne elektrarny
---------- rostliny
-----+ pocitace
---------- PHP
+ Noviny


cili:
prvni sloupec je ID autoincrement
druhy je ozaceni urovne
treti je oznaceni pod ktere ID (z prvniho sloupce) to patri</HTML>