Zadejte hledaný výraz...

Výpis kategorie a podkategorie

protected
verified
rating uzivatele
(13 hodnocení)
26. 11. 2015 23:31:30
Ahoj,
zajímalo by mě nejefektivěnšjí řešení pro tento přípda.
V jedné dtb mám cca 300 kategorií. Dle "parent" rozlišuji, co je hlavní, co je čeho podkategorie apod.
Nejprve vypíši vše s parent = 0 (hlavní kategorie).
Ted chci vypsat k jednotlivé hlavní kategorie jejich podkategorie (tzn select, kde where parent={id nadkategorie}.
řešil sem to tak, že sem přes php dal do Smarty frameworku hlavní kategorie a následně přes fci include vyvolával php skript, který vypsal vždy podkategorii k dané kategorii.
Je toto však efektivní řešení? Smarty je šablonovací systém a nepřijde mi uplně prima z toho vyvolávat nějaké php function. Ale nenapadá mě nějaké řešení, jak si už na straně php připravit do nějakého pole celý strom a pak ho jen ve smarty vypsat.
Možná jen:
1. skript > parent = 0 > zapíšu výsledek do pole a předám jako proměnnou do smarty
2 - x skript > parent = nadkategorie > zapíšu jako proměnnou, např "subcat-22" (číslo je ID nadkategorie) a poté je ve smarty vypíšu tak, že doplním za "subcat-" název nadkategorie a to celé dám do {section ....}{/section}
Máte lepší řešení?
Díky všem
PT
26. 11. 2015 23:31:30
https://webtrh.cz/diskuse/vypis-kategorie-a-podkategorie#reply1155580
Lukáš Oreška
verified
rating uzivatele
(3 hodnocení)
26. 11. 2015 23:38:18
Ahoj,
ukládal bych data do DB ve stromové struktuře. Doporučuji hledat např.: Traverzování kolem stromu, najdeš dost návodů i praktických. Určitě to půjde vypsat i pomocí smartu.
26. 11. 2015 23:38:18
https://webtrh.cz/diskuse/vypis-kategorie-a-podkategorie#reply1155579
Strom kategorií uložte pomocí closure table. Pak si jej vytáhněte a připravte k zobrazení. Šablonovací systém nechte řešit jen samotné zobrazení, ne čtení dat z databáze a jejich přípravu.
27. 11. 2015 00:40:00
https://webtrh.cz/diskuse/vypis-kategorie-a-podkategorie#reply1155578
crs
verified
rating uzivatele
(1 hodnocení)
2. 12. 2015 19:16:04
Co říkají vytvorweb a Martin Schlemmer, je jeden ze správných postupů. Pár odkazů, ve kterých se můžeš dočíst a doklikat víc:
Hierarchical database model - Wikipedia, the free encyclopedia…
http://www.sitepoint.com/hierarchical-data-database/
sql - What are the Options for Storing Hierarchical Data in a Relational Database? - Stack Overflow…
https://en.wikipedia.org/wiki/Hierarchical_and_recursive_queries_in_SQL
Metody ukládání stromových dat v relačních databázích | Interval.cz…
http://blog.voracek.net/databaze/closure-table-stromy-v-mysql-trochu-jinak/
http://www.zdrojak.cz/clanky/ukladame-hierarchicka-data-v-databazi-i/ a ii
Tyto postupy jsou pro uložení stromové struktury libovolného objemu (počtu listů stromu), šířky (počtu větví stromu v dané úrovni) i hloubky (délce cesty od listu ke kořenu) a když jeden z modelů (např. closure table) zvládneš, rozhodně neprohloupíš.
Já bych dodal, že přestože postup je správný, někdy to může být "kanón na vrabce".
Například, pokud víš, že tvé kategorie budou vždy jen do jedné podúrovně a bude jich méně než jednotky tisíc (tj. vejdou se do paměti), můžeš je načíst všechny jedním dotazem do pole a při načítání si je hierarchicky uspořádat. Pokud je tomu tak (jak naznačuješ ve svém příspěvku, kde se též ptáš na nejefektivnější řešení pro tento konkrétní případ), pak mi přijde, že nejefektivnější řešení je právě toto.
2. 12. 2015 19:16:04
https://webtrh.cz/diskuse/vypis-kategorie-a-podkategorie#reply1155577
Pro odpověď se přihlašte.
Přihlásit