Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Wywołanie określonej gałęzi z drzewa kategorii
grz16w
post
Post #1





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 14.07.2009
Skąd: Rzeszów

Ostrzeżenie: (0%)
-----


Witam. Próbowałem sam wymyślić na to sposób jednak mi się nie udało. Mam tabelę "kategorie", w której ma strukturę:

Cytat
ID | Name | isParent | parentID | Position


Pole "Position" służy do sortowania elementów wewnątrz tego samego rodzica, polem "isParent" sprawdzam czy dany element ma potomków a pole "parentID" to wiadomo. Mój problem polega na tym że nie wiem jak jednym zapytaniem (lub jak najmniejszą ich ilością i pętlą php) pobrać tylko jedną gałąź drzewa czyli podając ID rodzica pobieram rodzica i jego wszystkich potomków i pod-potomków itd. Jak to wykonać i czy w tym układzie to w ogóle możliwe? Pozdrawiam

P.S. Jeżeli w nieprawidłowym dziale to przepraszam.

Ten post edytował grz16w 10.08.2011, 06:49:57
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
phpion
post
Post #2





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Zależy ile masz kategorii w bazie danych. Jeśli nie jest ich kosmicznie dużo to warto rozważyć zastosowanie rozwiązania, które ja stosuję. Pobieram 1 zapytaniem wszystkie rekordy kategorii i w PHP buduję odpowiednią strukturę drzewiastą jako obiekt Tree. Mając taki obiekt załadowany operacje na kategoriach odbywają się bez udziału bazy danych. Wybieranie dzieci danej kategorii (czyli to co chcesz), tworzenie ścieżki kategorii itd. to po prostu zadanie klasy Tree. Dodając do tego mechanizm cache drzewo kategorii zrzucam do pliku i stamtąd pobieram przy kolejnych żądaniach. To rozwiązanie na pewno zużywa więcej pamięci niż każdorazowe odwoływanie się do bazy danych tylko po wycinek danych, ale w przypadku stosunkowo niewielkich drzew kategorii (nie podam Ci konkretnej wartości) sprawdza się wyśmienicie.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 6.10.2025 - 07:54