Evo, ja sam imao bio probleme da napravim ovo i kad sam napravio, ajd reko da okacim, mozda nekom zatreba.
Uz vrlo malo prerade oko smarty dela, uz neki while, moze da se uradi na beskonacno mnogo nivoa... Ako budem imao potrebe i za tim, definitivno cu uraditi ;)
Tabela ima 3 polja - id, namei parent_id (id roditelja)
Upit ka bazi
Tabela koja se dobija
Ovo 'childs' moze da koristi da se proveri u smarty da li je TRUE (vece od 0) tj. da li ima 'dece' pa ukoliko ima, da se ne dozvoli korisniku ... sta god.
Smarty Part :
Output
Uz vrlo malo prerade oko smarty dela, uz neki while, moze da se uradi na beskonacno mnogo nivoa... Ako budem imao potrebe i za tim, definitivno cu uraditi ;)
Tabela ima 3 polja - id, namei parent_id (id roditelja)
Upit ka bazi
Code:
SELECT *,
(SELECT COUNT(*) FROM categories AS c2 WHERE c2.parent_id=c1.id)
AS childs
FROM categories AS c1 ORDER BY name ASC;
SELECT *,
(SELECT COUNT(*) FROM categories AS c2 WHERE c2.parent_id=c1.id)
AS childs
FROM categories AS c1 ORDER BY name ASC;
Tabela koja se dobija
Code:
+----+-------------------+-----------+--------+
| id | name | parent_id | childs |
+----+-------------------+-----------+--------+
| 23 | .Co.Yu | 17 | 0 |
| 22 | .COM | 17 | 0 |
| 24 | .in.RS | 17 | 0 |
| 25 | .org.rs | 17 | 0 |
| 21 | .RS | 17 | 0 |
| 7 | 5.1 | 5 | 0 |
| 8 | 7.1 | 5 | 0 |
| 3 | Automobili | 1 | 3 |
| 1 | Automoto | NULL | 2 |
| 19 | CPU | 16 | 0 |
| 17 | Domeni | 14 | 5 |
| 5 | DVD Plejeri | 2 | 3 |
| 2 | Elektronika | NULL | 2 |
| 12 | Ford | 3 | 0 |
| 20 | Graficka | 16 | 0 |
| 18 | HDD | 16 | 0 |
| 16 | Komponente | 14 | 3 |
| 15 | Konfiguracije | 14 | 0 |
| 4 | Moto-cikli | 1 | 1 |
| 6 | MP3 Plejeri | 2 | 0 |
| 13 | Preko 1300ccm | 3 | 0 |
| 14 | Racunari i oprema | NULL | 3 |
| 10 | Yamahe | 4 | 0 |
| 11 | Yugo | 3 | 0 |
+----+-------------------+-----------+--------+
+----+-------------------+-----------+--------+
| id | name | parent_id | childs |
+----+-------------------+-----------+--------+
| 23 | .Co.Yu | 17 | 0 |
| 22 | .COM | 17 | 0 |
| 24 | .in.RS | 17 | 0 |
| 25 | .org.rs | 17 | 0 |
| 21 | .RS | 17 | 0 |
| 7 | 5.1 | 5 | 0 |
| 8 | 7.1 | 5 | 0 |
| 3 | Automobili | 1 | 3 |
| 1 | Automoto | NULL | 2 |
| 19 | CPU | 16 | 0 |
| 17 | Domeni | 14 | 5 |
| 5 | DVD Plejeri | 2 | 3 |
| 2 | Elektronika | NULL | 2 |
| 12 | Ford | 3 | 0 |
| 20 | Graficka | 16 | 0 |
| 18 | HDD | 16 | 0 |
| 16 | Komponente | 14 | 3 |
| 15 | Konfiguracije | 14 | 0 |
| 4 | Moto-cikli | 1 | 1 |
| 6 | MP3 Plejeri | 2 | 0 |
| 13 | Preko 1300ccm | 3 | 0 |
| 14 | Racunari i oprema | NULL | 3 |
| 10 | Yamahe | 4 | 0 |
| 11 | Yugo | 3 | 0 |
+----+-------------------+-----------+--------+
Ovo 'childs' moze da koristi da se proveri u smarty da li je TRUE (vece od 0) tj. da li ima 'dece' pa ukoliko ima, da se ne dozvoli korisniku ... sta god.
Smarty Part :
Code:
{section name=lvl_1 loop=$categories}
{if !$categories[lvl_1].parent_id}
{$categories[lvl_1].name}<option disabled="disabled" class='parentcategory'>{$categories[lvl_1].name}</option><br />
{section name=lvl_2 loop=$categories}
{if $categories[lvl_2].parent_id==$categories[lvl_1].id}
--{$categories[lvl_2].name}<br />
{section name=lvl_3 loop=$categories}
{if $categories[lvl_3].parent_id==$categories[lvl_2].id}
----{$categories[lvl_3].name}<br />
{/if}
{/section}
{/if}
{/section}
{/if}
{/section}
{section name=lvl_1 loop=$categories}
{if !$categories[lvl_1].parent_id}
{$categories[lvl_1].name}<option disabled="disabled" class='parentcategory'>{$categories[lvl_1].name}</option><br />
{section name=lvl_2 loop=$categories}
{if $categories[lvl_2].parent_id==$categories[lvl_1].id}
--{$categories[lvl_2].name}<br />
{section name=lvl_3 loop=$categories}
{if $categories[lvl_3].parent_id==$categories[lvl_2].id}
----{$categories[lvl_3].name}<br />
{/if}
{/section}
{/if}
{/section}
{/if}
{/section}
Output
Code:
AutomotoAutomoto
--Automobili
----Ford
----Preko 1300ccm
----Yugo
--Moto-cikli
----Yamahe
ElektronikaElektronika
--DVD Plejeri
----5.1
----7.1
--MP3 Plejeri
Racunari i opremaRacunari i oprema
--Domeni
----.Co.Yu
----.COM
----.in.RS
----.org.rs
----.RS
--Komponente
----CPU
----Graficka
----HDD
--Konfiguracije
AutomotoAutomoto
--Automobili
----Ford
----Preko 1300ccm
----Yugo
--Moto-cikli
----Yamahe
ElektronikaElektronika
--DVD Plejeri
----5.1
----7.1
--MP3 Plejeri
Racunari i opremaRacunari i oprema
--Domeni
----.Co.Yu
----.COM
----.in.RS
----.org.rs
----.RS
--Komponente
----CPU
----Graficka
----HDD
--Konfiguracije
Potpis
I don't need a girl for sex , All I Need is Binary and HEX