Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Tworzenie drzewka kategorii jednym zapytaniem
thomson89
post
Post #1





Grupa: Zarejestrowani
Postów: 1 178
Pomógł: 51
Dołączył: 7.01.2009
Skąd: Gdańsk

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


Witam!

Chciałbym utworzyć takie drzewko kategorii:
(IMG:http://ifotos.pl/img/drzewko_nreeas.png)

Jednym zapytaniem, na podstawie takiej tabelki:
(IMG:http://ifotos.pl/img/struktura_nreeqe.png)

Niestety kompletnie nie wiem jak się za to zabrać.

Obecnie, robię to poziomami. Łączę się z bazą, zapytanie pobieram kategorie 1-szego poziomu. Sprawdzam czy są kategorie które mają id tej kategorii w polu id_kategori_wyzszej... itd.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
zegarek84
post
Post #2





Grupa: Zarejestrowani
Postów: 1 332
Pomógł: 294
Dołączył: 12.10.2008
Skąd: Olkusz

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


można to posortować i poukładać jednym zapytaniem...
luknij na ten temat:
[SQLite]Pobieranie danych z trzech tabeli - chodziło tutaj o podkategorie - to nic, że masz w jednej tabeli (IMG:style_emoticons/default/winksmiley.jpg) , ale przy jednym zapytaniu jest taki problem, że z góry musisz założyć jakie jest maxymalne zagłębienie (ile tych joinów)...
___________________________________
ograniczeń i mniej problemów możesz mieć jeśli zrobisz to tak jak radzi WebSee - czyli pobierz jednym zapytaniem zawartość całej tabeli z kategoriami do skryptu, po czym by dowolnie zagłębioną strukturę wykonać pasuje to wrzucić rekurencyjnie (akurat tak na szybko na tablicach nie mam pomysłu, ale..)... pierwszy pomysł jaki mi przychodzi do głowy to zrobić to obiektowo (kategoria jako obiekt)....

więc jako, że tyle obiektów co kategorii i dosyć łatwo odwołać się do id to zrobisz stos obiektów w tablicy o indeksach id, dalej obiekt powinien mieć zmienną składową stosu swoich podkategorii o których nie musisz na razie myśleć, metodę do wrzucania podkategorii... obiekty są przekazywane przez referencję więc wszystko ładnie pięknie... jak masz te obiekty sprawdzasz do jakiej kategorii obiekt np. 5 powinien należeć wg. powyższego do 3, więc piszesz:
stos[3]->ad(stos[5]);
i tak do końca...

przy tym wszystkim w zasadzie nie potrzebujesz informacji o poziomie zagłębienia oprócz jednej: jakie są kategorie główne...
mając to info zaczynasz od kategorii głównych, odpowiednią metodą pobierasz podkategorie (i dalej z podkategorii metodą podkategorie...)...

to by było chyba na tyle (IMG:style_emoticons/default/winksmiley.jpg) - jakoś na tablicach nie mam ale na pewno trzeba by to zrobić z referencją (IMG:style_emoticons/default/winksmiley.jpg) - zapewne algorytm będzie podobny jak z obiektami...
Go to the top of the page
+Quote Post

Posty w temacie
- thomson89   Tworzenie drzewka kategorii jednym zapytaniem   21.03.2010, 20:04:13
- - WebSee   Pobierzesz, to jednym zapytaniem, tylko musisz odp...   21.03.2010, 20:12:03
- - Mchl   Jednym uniwersalnym zapytaniem nie da się. Drzewa ...   21.03.2010, 20:12:51
- - zegarek84   można to posortować i poukładać jednym zapytaniem....   21.03.2010, 22:03:43
- - wookieb   Do tego typu zadań idealne jest drzewo left right,...   21.03.2010, 22:41:30
- - m44   Jednakże wadą metody z left + right jest to, że ni...   21.03.2010, 23:23:40
- - Crozin   CytatJednakże wadą metody z left + right jest to, ...   21.03.2010, 23:30:30
- - celbarowicz   wygląda na to, że trzy poziomy Tobie wystarczają ...   22.03.2010, 08:46:01
- - icetique   Albo zainteresuj się doctrine. http://www.doctri...   22.03.2010, 09:05:22
- - Crozin   @icetique: Jak jest związek pomiędzy strukturą drz...   24.03.2010, 00:48:11
- - icetique   Ślepy? Doctrine obsługuje drzewa... Nie wiem, czy...   24.03.2010, 07:48:03
- - Crozin   - Chcę odsłuchać sobie płytę CD, jak to zrobić? - ...   24.03.2010, 13:17:36
- - icetique   Raczej tak bym to ujął: - Chcę odsłuchać sobie pł...   24.03.2010, 17:15:02
- - aio   No to żeby nie było sporu o to czy kupować samochó...   25.03.2010, 12:12:43
- - Mchl   Funkcja fajna, ale trudno to nazwać 'jednym za...   25.03.2010, 15:27:46
- - wookieb   Panienki przecież podano rozwiązanie. Drzewo left ...   25.03.2010, 15:32:19
- - aio   Cytat(wookieb @ 25.03.2010, 15:32:19 ...   25.03.2010, 23:50:12


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: 15.10.2025 - 18:44