![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 426 Pomógł: 1 Dołączył: 2.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
Witam
Mam następujący problem. Mam pewną giełde i oferty umieszczane tam są w danych kategoriach. Kategorie są 3poziomowe: Kategoria główna -> podkategoria -> własciwa kategoria Przy danej ofertcie zapisuje id 'własciwej kategorii', a reszty nie ruszam. Struktura tabeli categories wygląda następująco: CREATE TABLE `categories` ( `id` int(10) NOT NULL auto_increment, `main` int(10) NOT NULL, `name` varchar(40) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=16 ; pole 'main' zawiera id kategorii nadrzędnej (tej w której sie znajduje) jeśli = 0 to jest to główna kategoria. I teraz chcialem wygenerować drzewo kategorii w stylu: -Kategoria główna (łączna liczba ofert w niej) ---Podkategoria1 (łączna liczba ofert w niej) ------Subkategoria ((łączna liczba ofert w niej, te id jest zapisany przy danej ofercie) ---Podkategoria2 (łączna liczba ofert w niej) -Kategoria główna2 (łączna liczba ofert w niej) ---Podkategoria1 (łączna liczba ofert w niej) -----Subkategoria ((łączna liczba ofert w niej, te id jest zapisany przy danej ofercie) itd. Problem w tym ze nie wiem wogle jak sie za to zabrać :/ Pozdrawiam Apo Ten post edytował Apo 6.06.2007, 22:29:27 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 235 Pomógł: 2 Dołączył: 30.06.2006 Ostrzeżenie: (0%) ![]() ![]() |
Zakładam że zapisać sobie jakoś umiesz. Zczytywanie - masz trzy opcje:
Ręcznie w pętli pobierać główne kategorie, dla każdej z nich podkategorie i dla każdej z nich artykuły (trzy zagnieżdżone pętle, kiepsko) Iteracja ze stosem/kolejką/czym ci wygodniej. Google ci powiedzą więcej. Rekurencja. Google również doradzą. |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 426 Pomógł: 1 Dołączył: 2.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
heh wiem ze mam to rekurancja pobrac ale nie wiem jak ;/ Napisalem kilka zapytań ale żadne nie bylo doskonałe... mam nadzieje ze ktos z Was cos podobnego pisał
|
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 13 Pomógł: 0 Dołączył: 4.06.2007 Ostrzeżenie: (0%) ![]() ![]() |
Nie masz tego pobrac rekurencją, tylko rekurencyjnie wyświetlić.
Dane mozesz sobie pobrac jednym zwyklym zapytaniem i umiescic w jakiejs strukturze ( tablica, obiekt ). Dobrze by bylo gdybys mial zapisane w kazdej kategorii ID kategori glownej, wtedy moglbys pobrac podkategorie dotyczace tylko danej kategorii glownej a nie wszystkie, jednak przy niezbyt ogromnej ilosci kategorii ( podkategorii ) nei bedzie raczej problemu. Potem musisz wyświetlić drzewko startując od jakiejs kategorii. Rekurencyjnie robisz to w ten sposob iz pobierasz kategorie od ktorej startujesz i wyswietlasz, potem pobierasz kategorie ktore maja w MAIN wpisane ID kategorii ktora wysweitliles i w petli wywolujesz funkcje w ktorej jestes przekazujac po kolei jako parametr ID kazdej podkategorii.
To oczywiscie prowizorka kodu ktory ma tylko zobrazowac jak to sie robi. Kwestia czy pobierzesz dane najpierw do tablicy czy w funkcji pobierz_podkategorie() bedziesz pobieral dopiero podkategorie z bazy danych. Mozesz tez sprubowac pobrac z bazy danych kategorie i uporzadkowac je w strukture zagniezdzonej wielowymiarowej tablicy ( rekurencyjnie ) i z tej struktury pobierac dane. -------------------- |
|
|
![]() ![]() |
![]() |
Aktualny czas: 21.08.2025 - 14:02 |