kategóriák listázása mysql táblából

Üdv!

Van egy ilyen táblám amiben a fő és alkategóriákat tárolom.
id - category_name - maincategory_id, ahol a maincategory_id gyakorlatilag annak a kategóriának az azonosítóját tárolja amely a főkategóriája.

A kategóriákat egy select-option mezőbe szeretném betenni valahogy így.
Autó > Személyautó
Autó > Személyautó > Audi
stb.
Tud valaki segítenni ebben?

Hozzászólások

Mi a feladat? pl. autó behelyezése egy kategóriába? (2 db select)

Megvan az elképzelésed, hogy hogy nézzen ki? A 2 szint miatt sokféleképpen lehet:

  • főkategória kiválasztása, majd oldal újratöltése a második listával - ez a legegyszerűbb és egyben böngészőfüggetlen eljárás, miközben bookmarkolható, indexelhető, stb., cserébe kisebb a felhasználói élmény
  • főkategória kiválasztása, majd AJAX-szal betölteni a második kategórialistát
  • minden kategóriát bele a listába, esetleg a kategóriák mellett jelezni, hogy melyik főkategóriába tartozik. Ha nincs túl sok kategória, talán még jobb is, mint az első
  • sok egyéb

aha
ha jól értem erről van szó:
id - category_name - maincategory_id
magyarosabban:
id, név, szülő_id

kell egy fix root elem, ami a szülője az első szintnek (vagy simán csak kinevezni a 0 id-t a gyökérnek)

Az alkategóriát úgy kapod meg hogy lekéred kiknek ő a szűlője

select * from tábla where szülő_id="szülő"

Pl:
id, neve, szülő_id
0, root, -1
1, Autó, 0
2, Ford, 1
3, Audi, 1
4, Mondeo, 2
5, Sierra, 2
6, A6, 3
7, A8, 3
8, Motor, 0
9, Suzuki Motors, 8
10, RM-Z250, 9

pl:
Fő kategória megkapása:
select * from tábla where szülő_id="0"
ez kilistázza, hogy Autó (1), Motor (8)

autó kategória tartalma:
select * from tábla where szülő_id="1"
ebből: Ford(2), Audi(3)

Ford kategória tartalma:
select * from tábla where szülő_id="2"
ebből: Sierra(4), Mondeo(5)

Ezeket szépen ciklusokba téve, az eredményből szedett értékeket felhasználva le lehet generálni az optionokat.

-Vagy csak az éppen kiválasztottat generálod le, de akkor minden választásnál újra kell tölteni az oldalt,
-vagy legenerálod az összes lehetőséget és kliens oldalt javascripttel cserélgeted a megfelelő optionokat.
-vagy ajax-szal szerver oldalt mindig legeneráltatod ami épp kell.

Köszönöm az eddigi válaszokat. Szóval a fő gondom az, hogy bármennyi kategória lehet és bármennyi alkategória is. Sőt az alkategóriák is lehetnek egyben főkategóriák. Tehát nincs adott kategória szám. Ezt hogyan rendezzem cikluba?

Akkor minden elemnek adsz egy azonosítót és egy szülőelem-hivatkozást (a szülő elem id-ja). A menü gyökerében a 0 szülőjű gyökérelemek vannak.
Végigméssz az eredményhalmazon, ami 0 szülőjű, az megy a kimenettömbbe. Aztán végigméssz ezen a tömbön, és keresed az eredményhalmazból a gyerekeket, persze rekurzívan.