Witam, mam tabele bazy danych o takiej strukturze:

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:

  1. 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:
  1. <ul class="menu">
  2. {section name=glowna loop=$kategoria}
  3. {if $kategoria[glowna].IdNadrzednej==null}
  4. <li class="glowna"><a href="#">{$kategoria[glowna].NazwaKategorii}</a></li>
  5. {section name=podkategoria loop=$kategoria}
  6. {if ($kategoria[podkategoria].IdNadrzednej==$kategoria[glowna.index].Id)}
  7. <li class="podkategoria"><a href="#">{$kategoria[podkategoria].NazwaKategorii}</a></li>
  8.  
  9. {/if}
  10. {/section}
  11.  
  12. {/if}
  13. {/section}
  14.  
  15. </ul>


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.