netvalue
27.02.2012, 10:39:45
Witam,
Od dłuższego czasu zastanawiam się nad rozwiązaniem aby wyświetlić produkt w nadrzędnych kategoriach do których należy kategoria w której jest przypisany.
NP. drzewo
Kategoria A (id:1,parent_id:0)
-kategoria b (id:8,parent_id:1)
-kategoria c (id:9,parent_id:1)
-kategoria cc (id:10,parent_id:9)
Produkt
produkt (id:1, category_id:10)
Chciałbym aby ten produkt wyświetlał się po wejściu Kategoria A, kategoria B i oczywiście kategoria CC
Uriziel01
27.02.2012, 12:00:44
Możesz albo pobrać wszystkie kategorię których poziom jest wyższy od aktualnej a potem w pętli rekursywnej sprawdzać czy zawiera kategorię nadrzędne do kategorii szukanej, oczywiście w każdej iteracji pętli jeżeli znajdziesz jakąś kategorię nadrzędną robisz dla niej dokładnie taką samą pętlę. Potem mając już gotową tablicę zawierającą id każdej interesującej nas kategorii przy wyciąganiu produktów z bazy robisz WHERE category_id IN (...) . Niestety przy naprawdę dużych tablicach można tak dostać zadyszki. Lub użyć czegoś sprytniejszego, technik jest całkiem sporo, ogólnie hasło po którym możesz ich szukać to 'Storing Hierarchical Data in a Database'.