Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> problem z pobraniem produktów z drzewa spełniających okreslone warunki
nowy_pehapowiec
post
Post #1





Grupa: Zarejestrowani
Postów: 220
Pomógł: 0
Dołączył: 24.08.2009

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


Witam,
jest jakieś drzewo, powiedzmy, że produktów (id | parentid). Do produktów są przypisane tagi (osobna tabela z tagami i tabela łącząca). I teraz chce wyświetlić wszystkie produkty mające przypisany jakiś tag. Ale chcę wyświetlić je w formie drzewa (kilka poziomów). I teraz jest trudność, bo tagi przypisuje zwykle do produktów (nie do kategorii). Czyli pobranie tabeli z drzewem z prostym warunkiem WHERE odpada, bo jeśli jakiś rodzic nie ma odpowiedniego tagu to nie zostanie wyświetlony, jego dzieci też nie. A jeśli mają odpowiedni tag to powinny. Np rodzic "monitory" nie ma tagu lcd, jego potomek "monitory lcd" już ma ten tag, i oczywiście wszystkie monitory lcd w grupie "monitory lcd" mają tag lcd. Pobierając drzewo z prostym warunkiem WHERE nie wyświetlę kategorii "monitory" bo nie ma tagu lcd, czyli nie wyświetlę żądnych monitorów.

Nie mam pojęcia jak to zrobić żeby było dobrze. Jedyne co wymyśliłem to mając id (powiedzmy 12345) kategorii mógłbym rekurencyjnie sprawdzać czy któryś z potomków na dowolnym poziomie nie ma odpowiedniego tagu. Jeśli ma to wyświetlam kolejnych potomków kategorii o id=12345 aż dojdę do produktu który ma szukany tag. I tak dla każdego id. Bardzo zagmatwane. Jak to lepiej zrobić??

Wyświetlane produktów jako listy odpada ma być drzewko (IMG:style_emoticons/default/biggrin.gif) Uwziąłem się i chcę się dowiedzieć jak to wykonać.

pozdro

(IMG:style_emoticons/default/questionmark.gif) (IMG:style_emoticons/default/questionmark.gif)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
nowy_pehapowiec
post
Post #2





Grupa: Zarejestrowani
Postów: 220
Pomógł: 0
Dołączył: 24.08.2009

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


Cytat(cudny @ 19.10.2009, 15:34:40 ) *
Tutaj może pomóc join left jeśli cię dobrze zrozumiałem.
Musisz sobie poczytać - na forum jest sporo na ten temat.
Łączysz dwie tabele i masz wszystkie info - a jeśli coś nie istnieje to zwraca wartość NULL

Jeśli nie o to chodziło to daj znać.
[xml][/xml]
pzdr


Aż tak słaby z sql nie jestem (IMG:style_emoticons/default/smile.gif) Ale chodzi o to jak pobrać drzewo drzewo spełniające okreslone warunki. Np tag=super. Powiedzmy, że jest produkt spełniający ten warunek, ale jego rodzic już go nie spełnia. Więc jak pobieram drzewo od góry (pobieram dzieci najstarszego elementu, potem to samo dla pobranych wcześniej dzieci) i dam warunek where to jeśli w drzewie pojawi się element nie spełniający warunku to nie zostanie on wyświetlony i jego dzieci również, mimo że może spełniają warunek. Chyba powinienem inaczej pobierać drzewo, tylko nie bardzo wiem jak.






Cytat(vokiel @ 19.10.2009, 17:52:01 ) *


Znam tą stronę, jest super wszystko wyjaśnione, ale nie ma nic o wybieranie gałęzi drzewa z warunkami.






Zapomniałem się jeszcze zapytać, czy drzewo z bazy lepiej jest pobierać jednym zapytaniem, czy wieloma? Teraz pobieram wieloma zapytaniami. Po kolei wszystkie dzieci jakiegoś rodzica, potem dzieci dzieci. Czyli bardzo dużo pytań SELECT, między którymi wyświetlam listę nieuporządkowaną w html. Czy jeśli szybkość jest nadal na akceptowalnym poziomie, to warto zmienić tą moją metodę? Np pobrać tabelę z drzewem do PHP i później w samym PHP generować z niej odpowiednią strukturę drzewa? Byłoby dużo więcej roboty ale może warto?


pozdro
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: 13.10.2025 - 23:06