Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php][sql] jak powinna wyglądać funkcja
Forum PHP.pl > Forum > Przedszkole
piotr1w
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ę
The Night Shadow
  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ć...
piotr1w
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
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.