Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php][sql] jak powinna wyglądać funkcja, (rekurencja, drzewo kategorii)
piotr1w
post
Post #1





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 31.03.2007

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


Baza MySQL (3.23). Operuję na dwóch tabelach:

1. towary
- towar_id (PK)
- towar_kategoria (FK)

2. kategorie
- kategoria_id (PK)
- kategoria_poziom
- kateogria_nadrzedna

Pytanie:
Jak z poziomu języka PHP sformułować funkcję/pętlę by po podaniu jej wartości kategoria_id przechodzina od zadanej kategrii w dół po drzewie kategorii zliczająć ile w sumie towarów się w tej kategorii (łącznie z jej podkategoriami) znajduje?

Nie wiem czy do końca jasno udało mi się przedstawić sprawę - chodzi mi o coś podobnego do Allegro tj.
np. by po wskazaniu kategorii "Aparaty cyfowe" przechodziła przez wszystkie podkategorie tej kategorii uwzględniając zarówno aparaty cyfrowe, analogowe itp. a więc brało pod uwagę wszystkie towary które umieszczone są głębiej w hierarchii.

Pole kategoria_poziom w tabeli mówi jak głęboko (na jakim poziomie) znajduje się każda z kategorii, pole kategoria_nadrzędna przechowuje wartość kategoria_id kategorii pod którą należy bieżąca.

Będę bardzo wdzięczny za pomoc, mile widzany przykład.
Dziękuję
Go to the top of the page
+Quote Post
The Night Shadow
post
Post #2





Grupa: Zarejestrowani
Postów: 495
Pomógł: 2
Dołączył: 5.02.2006
Skąd: Wrocław

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


  1. <<?php
  2. function kategorie_ogloszenia( $id )
  3. {
  4. $z_kategorie =
  5. ('
  6. SELECT *
  7. FROM kategorie
  8. WHERE kategorie_id_matki = ''.$id.''
  9. ');
  10.  
  11. $p_kategorie = mysql_query($z_kategorie);
  12. $i_kategorie = mysql_num_rows($p_kategorie);
  13.  
  14. if ( $i_kategorie > 0 )
  15. {
  16. while ( $d_kategorie = mysql_fetch_assoc($p_kategorie) )
  17. {
  18. $z_ogloszenia =
  19. ('
  20. TUTAJ ZAPYTANIE POBIERANIA OGŁOSZEŃ DO KATEGORII O ID_KATEGORII = $d_kategorie['kategorie_id']
  21. ');
  22. $p_ogloszenia = mysql_query($z_ogloszenia);
  23. $i_ogloszenia = mysql_num_rows($p_ogloszenia);
  24.  
  25. $ilosc_ogloszen = $ilosc_ogloszen+$i_ogloszenia+kategorie_ogloszenia( $d_kategorie['kategorie_id'] );
  26. }
  27. }
  28.  
  29. return $ilosc_ogloszen;
  30. }
  31.  
  32. $z_ogloszenia =
  33. ('
  34. TUTAJ ZAPYTANIE POBIERANIA OGŁOSZEŃ DO KATEGORII O ID_KATEGORII = $id
  35. ');
  36. $p_ogloszenia = mysql_query($z_ogloszenia);
  37. $i_ogloszenia = mysql_num_rows($p_ogloszenia);
  38.  
  39. $ilosc_ogloszen = $i_ogloszenia+kategorie_ogloszenia( $id );
  40. ?>


Coś w tym stylu powinno pomóc... nie testowałem, pisane od ręki, ale z czegoś podobnego zwykłem korzystać...

Ten post edytował The Night Shadow 16.04.2007, 16:33:14


--------------------
Programista Stron i Serwisów WWW oraz Aplikacji Internetowych
Specjalista ds. Pozycjonowania Aplikacji Internetowych
Copywriter
Go to the top of the page
+Quote Post
piotr1w
post
Post #3





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 31.03.2007

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


Cytat(The Night Shadow @ 16.04.2007, 17:29:51 ) *
Coś w tym stylu powinno pomóc... nie testowałem, pisane od ręki, ale z czegoś podobnego zwykłem korzystać...

Zaproponowane rozwiązanie bardzo mi pomogło i świetnie się sprawdziło w moim projekcie, udało mi się uzyskać dokładnie to co chciałem.
Ogromnie dziękuję, bardzo pomogło
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: 20.08.2025 - 13:37