Vypisovanie poloziek podla vybranej kategorie vratane podkategorii
mam 1.tab s kategoriami:
id podkat nazov
1 0 Pocitace
2 1 Komponenty
3 2 Procesory
4 2 Pamate
5 2 HDD
a 2.tab s polozkami
id id_kat nazov
1 3 Pentium 4
2 4 DDR2 2GB
3 5 WD 250GB
cize, da sa povedat klasika... Ked vojdem do jednotlivych kategorii 3,4,5 zobrazi sa mi v kazdej po jednej polozke... Ako urobit to ze ked vojdem do kategorie Komponenty (2) mi zobrazi vsetky polozky ktore su vnorene v podkategoriach v nej... ale aj v dalsich podkategoriach v podkat.... atd..... bez limitacie urovne... (resp. 10 urovni je max)
Mam nato pomerne dost malo casu, preto chcem vyuzit Vas aby ste ma nakopli hned spravnym smerom, aby som to nemusel viacrazy prerabat, akonahle zistit ze sa to da aj lepsie (ako mam vo zvyku)....
zatial moc diki
Majo
Fórum › MySQL
Vypisovanie poloziek podla vybranej kategorie vratane podkategorii
To marioff : Přijde mi to jako databázový dotaz, co s php nemá moc společného.
Například:
SELECT nazev FROM polozky WHERE id_kat in (SELECT id FROM kategorie WHERE podkat=2)
To Mafiosoweb :
tým selectom vyberieš iba položky zo všetkých podkategórií kategórie 2 ale neberieš položky samotnej kategórie 2 a ani položky v hlbších podkategóriách.
ten prvý problém by sa dal hádam odstrániť pridaním
...WHERE id_kat=2 or id_kat=(SELECT ...
Ale stále to nerieši tie hlbšie podkategórie...
To marioff :
Ak to potrebuješ narýchlo zlepiť, tak rekurzívne získaj ID všetkých kategórii, ktorých sa to týka, a potom urob:
SELECT id, ... FROM polozky WHERE id_kat IN (<ciarkami oddelený zoznam ideciek kategorii>)
Ak by si mal ten strom kategórii navrhnutý s left-right hotnotami (neviem ako sa to presne volá, ...), tak problém vyriešiš jediným selectom.
To Prog. : jj.... asi rychlejsie bude prerobit kategorie tak aby sa dalo traverzovat okolo stromu tych kategorii... pretoze ziskat vsetky podkat je krajne nevyhodne... a navyse prasacina :) ....
To marioff :
No pre mňa by rýchlejšie bolo capnúť tam jednu rekúrzívnu funkciu a problém je vyriešený. Ale predpokladám, že si to myslel tak, že rýchlejšie bude selectovanie. Editácia stromu sa však výrazne skomplikuje, hlavne, ak budeš chcieť tento strom manažovať z viacerných aplikácí (editor, importér, ...) - vždy musíš riešiť L/R...
To Prog. : diky za opravy, ja to nadhodil jen jako rychlé nakopnutí co autor žádal :)
To Prog. : To Mafiosoweb :
takze dnes v noci som to urobil predsa pomocou rekurzie som nasiel ku kazdej kategorii odpovedajuce vsetky podkategorie a tie ULOZIL do noveho stlpca... cize pri vybere kategorie v ktorej sa aktualne clovek nachadza sa vybere dany stlpec a rovno sa cely hodi do IN ($stlpec)....
nove kategorie sa robia zriedka kedy a uz ked sa vytvori nova, hned nato sa spusti znova rekurzivna funkcia ktora znova prepocita vsetky podkategorie pre kazdu kategoriu...
aspon sa mi to zda vykonovo lepsie raz prejst vsetko rekurziou a vysledky ulozit :)
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
[PHP] Zložitejšie vypisovanie stránok v stránkovaní — založil Jessinem
System pre zadavanie, vypisovanie vysledkov a vypisanie poradia timov — založil janik366
While spájanie položiek — založil Anonym
Sčítanie položiek — založil tomas2245
Vypísanie položiek v DB — založil User
Moderátoři diskuze