Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> drzewo kategorii i podliczanie ofert
Apo
post
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
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
Ziels
post
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ą.
Go to the top of the page
+Quote Post
Apo
post
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ł
Go to the top of the page
+Quote Post
jarekh
post
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.
  1. <?
  2.  function wyswietl($id){
  3. $nazwa = pobierz_nazwe($id);
  4. echo $nazwa;
  5. $podkategorie = pobierz_podkategorie($id);
  6. if(is_array($podkategorie){
  7. foreach($podkategorie as $p_id){
  8. wyswietl($p_id);
  9.  }
  10. }
  11. }
  12. ?>


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.


--------------------
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 21.08.2025 - 14:02