Autor Zpráva
Ivorius
Profil
Potřeboval bych pomoc, chtěl bych jednoduše vypsat menu, kde bude otevřená vždy ta větev kategorie, ve které se právě nacházím.

Př.
- kategorie 1
- kategorie 2
- kategorie 3
-- kategorie 3a
-- kategorie 3b - tady jsem
-- kategorie 3b I
-- kategorie 3b II

-- kategorie 3c
- kategorie 4

Napadlo mě si jedním selectem naházet do pole posloupnost k té kategorii, druhým selectem všechny kategorie do dalšího pole a pak jen při výpisu porovnávat a vypisovat. Nebo víte někdo o nějakém lepším řešení?
imploder
Profil
Takové obyčené řešení je tabulka
 id | id_nadrazene | nazev 


obsah určité kategorie pak vypíšeš
SELECT * WHERE id_nadrazene='xxx'


Asi existují i jiné metody, na Intervalu je tuším nějaký článek o traverzování okolo stromu.
Ivorius
Profil
Díky za ochotu, ale jak jsem psal, používám traverzování namísto rekurze.
imploder
Profil
http://php.vrana.cz/traverzovani-kolem-stromu-prakticky.php
třeba pomůže
Ivorius
Profil
:) jj to znám, z toho (a zaachiho série) jsem původně vycházel a i se ptal, nicméně to neřeší můj dotaz.
BetaCam
Profil
Ivorius
Nejsem si tim ted jistej a hlavně to nemám kde vyzkoušel, ale mohlo by fungovat něco jako

SELECT * FROM tabulka WHERE (lft <= X AND rgt >= Y) OR parent_id in(SELECT parent_id FROM tabulka WHERE lft <= X AND rgt >= Y) order by lft


za předpokladu, že znáš lft a rgt prvku kde se nacházíš.

Vaše odpověď

Mohlo by se hodit

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0