Witam serdecznie,

jest to mój pierwszy post na tym forum dlatego, jeżeli został źle umieszczony proszę administratorów o jego przesunięcie.

Borykam się z pewnym problemem. Mianowicie staram się zrobić statystyki ogłoszeń (licznik ogłoszeń) dla drzewa kategorii wielopoziomowego.

Zrobiłem dwie osobne tabele. Jedna na drzewo kategorii, druga na statystyki dla kategorii.

Pierwsza tabela: category_tree (ID, parent_id, category_name)
Druga tabela: category_stats (ID, cat_id, reg_id, count)

Napisałem kawałek kodu:

  1. <?php
  2. $GET_CATEGORY = mysql_query("SELECT * FROM category_tree ORDER by id DESC");
  3.    
  4.    if(mysql_num_rows($GET_CATEGORY)>0) {
  5.        while($data_cat=mysql_fetch_array($GET_CATEGORY)) {
  6.            $cat = $data_cat['id'];
  7.            $GET_REGION = mysql_query("SELECT * FROM region_tree ORDER by id ASC");
  8.            if(mysql_num_rows($GET_REGION)>0) {
  9.                while($data_reg=mysql_fetch_array($GET_REGION)) {
  10.                    $reg = $data_reg['id'];
  11.                    $GET_ADVERTS = mysql_query("SELECT * FROM adverts WHERE status='2' AND category='$cat' AND region='$reg'");
  12.                    $count = ceil(mysql_num_rows($GET_ADVERTS));
  13.                    //mysql_query("INSERT INTO category_stats VALUES ('', '$cat', '$reg', '$count')");
  14.                    echo $cat.",".$reg." => ".$count.", ";
  15.                }
  16.            }
  17.        }
  18.    }
  19. ?>


Ten kod działa w miarę ok. tzn. zlicza mi ogłoszenia dla danej kategorii i regionu. Problem pojawia się gdy jakaś kategoria ma dzieci. Wtedy liczba ogłoszeń rodzica powinna być sumą liczby ogłoszeń dzieci i za to właśnie nie wiem jak mam się zabrać smile.gif

Obrazowo:

Na stronie głównej serwisu znajduje się lista kategorii rootowych. Kategoria DOM nie ma dzieci i znajduje się w niej 10 ogłoszeń - wszystko wyświetla się dobrze. DRuga kategoria BUDOWNICTWO ma już dzieci jednak licznik wskazuje zero ponieważ mój skrypt obliczył tylko ogłoszenia dla BUDOWNICTWO które ma ID 2, a nie dla DZIECI tej kategorii. Licznikiem kategorii BUDOWNICTWO powinna być suma ogłoszeń DZIECI.

Pozdrawiam i proszę o pomoc