KategorieMenu
- IdentyfikatorKategorii int primary key auto_increment
- KategoriaGlowna int
- Pozycja int
- nazwaKategorii varchar(32)
- AktywnoscKategorii tinyint(1)
Jeśli jakaś kategoria jest główna to "KategoriaGlowna" ma wartość "-1" w przeciwnym wypadku jest tam identyfikator nadrzędnej kategorii.
Wysyłam do bazy mysql takie zapytanie:
SELECT IdentyfikatorKategorii AS Id, NazwaKategorii, AktywnoscKategorii, Pozycja, IF((SELECT KategoriaGlowna AS Glowna FROM KategorieMenu WHERE IdentyfikatorKategorii=Id) =-1,'Kategoria Glowna', (SELECT kategoria.NazwaKategorii AS Kategoria FROM KategorieMenu AS kategoria INNER JOIN KategorieMenu AS podkategoria ON podkategoria.KategoriaGlowna = kategoria.IdentyfikatorKategorii WHERE podkategoria.IdentyfikatorKategorii=Id)) AS KategoriaNadrzedna, (SELECT kategoria.IdentyfikatorKategorii AS Kategoria FROM KategorieMenu AS kategoria INNER JOIN KategorieMenu AS podkategoria ON podkategoria.KategoriaGlowna = kategoria.IdentyfikatorKategorii WHERE podkategoria.IdentyfikatorKategorii=Id) AS IdNadrzednej FROM KategorieMenu AS zapytanie WHERE AktywnoscKategorii = 1
Dostaję tablicę i teraz chciałem zacząć to wyświetlać w smarty za pomocją {section}
No i drzewko kategoria pod nią podkategorie i dopiero następna głowna uzyskuję bez problemu.
Jednak mam problem z wcześniejszym sprawdzeniem czy kategoria główna ma jakieś podkategorie czy też nie. Od tego zależy czy będę z niej robić link czy też nie(lub akcja do pokazania podkategorii)
Z tego zapytania Dostaje takie poza:
- Id
- NazwaKategorii
- Pozycja
- KategoriaNadrzedna
- IdNadrzednej
W smarty wyświetlam to tak:
Otrzymuję liste na której zaznaczone są główne i podkategorie nie ma z tym problemu. Nie wiem tylko jak mam sprawdzić wcześniej przed wyświetleniem czy ta kategoria główna będzie miała jakieś podkategorie i wtedy nie robić niej linka lub nie będzie i wtedy link do odpowiedniego miejsca.