Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: drzewko - zliczanie
Forum PHP.pl > Forum > Bazy danych > MySQL
sumar
Witam, mam taką funkcję

  1. <?php
  2.  
  3.  
  4. function display_children($parent, $level, $dbcategories, $dbstore) { 
  5.  $result = mysql_query(&#092;"SELECT ID, Name FROM $dbcategories WHERE IDpar='$parent'\"); 
  6.  
  7.  while ($row = mysql_fetch_array($result)) { 
  8.  
  9.  $ID = $row['ID'];
  10.  $query_count = mysql_query(&#092;"SELECT COUNT(ID) FROM $dbstore WHERE IDcat = '$ID'\");
  11.  $row_c = mysql_fetch_row($query_count);
  12.  $Count = $row_c[0];
  13.  echo str_repeat('&nbsp;',$level).&#092;"<a href=\"showcat.php?cat=\".$row['ID'].\"\">\".$row['Name'].\"($Count)<br>n\"; 
  14.  
  15.  display_children($row['ID'], $level+1, $dbcategories, $dbstore); 
  16.  } 
  17. }
  18.  
  19.  
  20. ?>


W bazie danych mam

  1. CREATE TABLE cat (
  2. ID int(11) UNSIGNED NOT NULL AUTO_INCREMENT,
  3. IDpar int(11) UNSIGNED DEFAULT '0',
  4. Name char(35) DEFAULT NULL,
  5. PRIMARY KEY (ID)
  6. ) TYPE=MyISAM;



No i wszystko fajnie chodzi, tylko że ten COUNT podaje wartość tylko przy kategoriach jakie są ostatnie w hierarchi. A mi chodzi o to, żeby zliczał wszystko.
Np. Jeśli jest kilka podkategorii w kategorii „komputery”, to żeby przy kategorii komputery pokazywał sumę wszystkich artykułów z danych podkategorii.

Czy wie ktoś jak to zrobić??
spenalzo
Jeżeli nie jest znana liczba poziomów, to będze ciężko zliczyć ilość podkategorii w samym mysql...
lemming
Niewiem czy jeszcze tego potrzebujesz ale ja mam tak
  1. <?php
  2.  
  3. function licz_produkty_w_kategori($kategoria) {
  4. global $db;
  5. $products_count = 0;
  6. $db->query(&#092;"SELECT count(*) AS total FROM produkty p, produkty_do_kategori p2k WHERE p.id=p2k.produkt_
    i
  7.  AND p.show_buyer='1' AND p2k.kategoria_id='$kategoria'\");
  8. $row = $db->fetch_row();
  9. $products_count += $row['total'];
  10.  
  11. $db->query(\"SELECT * FROM menu WHERE parent='$kategoria'\");
  12. $numrows = $db->num_rows();
  13. if ($numrows > 0) {
  14. while ($row = $db->fetch_row()) {
  15. $products_count += licz_produkty_w_kategori($row['id']);
  16. }
  17. }
  18. return $products_count;
  19. }
  20.  
  21. ?>

tworzysz sobie tabele produkty_do_kategori i tam dajesz 2 pola:
produkt_id (id produktu)
kategoria_id (id kategori)
i uzupełniasz przykładowo:
produkt_id | kategoria_id
1 | 1
2 | 1
3 | 2 (i np. 2 jest pod kategoria 1)
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.