Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Suma liczb po przecinku.
Forum PHP.pl > Forum > Przedszkole
Weles
Witam!
We wcześniejszym temacie: Temat: SQLPHPDrzewo Rekurencyjne
Dowiedziałem się że mam nie działającą zmienną $baza_forum która zmarnowała mi 2 dni prób.
No i tak.. Napisałem sobie tę drzewko rekurencyjne o tak:

  1. function rekurencja($id) {
  2. $krek1 = mysql_query("SELECT * FROM dzialy WHERE id='$id'");
  3. if(mysql_num_rows($krek1) > 0) {
  4. while($krek = mysql_fetch_array($krek1)) {
  5. $rek = mysql_num_rows(mysql_query("SELECT * FROM tematy WHERE dzial='$krek[id]'"));
  6. echo $rek.',';
  7. $srek1 = mysql_query("SELECT * FROM dzialy WHERE sub='$krek[id]'");
  8. if(mysql_num_rows($srek1) > 0) {
  9. while($srek = mysql_fetch_array($srek1)) {
  10. rekurencja($srek['id']);
  11. }
  12. }
  13. }
  14. }
  15. }
  16.  
  17. echo rekurencja(8);


No i all pika, tylko że nie tak jak trzeba.. Otóż,
Wynik ten zwraca mi po kolei ile tematów jest w danym dziale zamiast zsumowanej liczby (łącznie tematów)
Dodałem więc jak widać "echo $rek.',';" żeby był przecinek po każdej liczbie, i w miejscu wyechowania "rekurencja(8)" dawałem różne funkcje np: "number_format", "round" tak żeby sprawdzić czy cokolwiek nie zsumuje tego (wiem co te funkcje znaczą, ale nie miałem po prostu pomysłu).

I tutaj nasuwa się z mojej strony pytanie,
Jak to zsumować?

Pozdrawiam!
greycoffey
http://blog.mwojcik.pl/2008/02/17/drzewa-k...-php-metoda-ip/
Tutaj jest inna metoda, która wg mnie jest łatwiejsza^^.
Weles
Przejrzałem z grubsza i nie widziałem nigdzie ani mysql_num_rows ani COUNT, oprócz tego:
  1. $q=mysql_query('SELECT COUNT(*) FROM kategorie WHERE ip LIKE("' . $cat['ip'] . '.%")');

Które jest nie na temat :F
greycoffey
I właśnie to jest odpowiedzią. IP to identyfikator, jest np. 1 - Unix, jego dzieckiem jest 2 - Linux, a jego 3 - Debian, potem 4 - Ubuntu, i wychodzi nam IP dla Ubuntu: 1.2.3.4 wink.gif
Teraz jak chcesz policzyć liczbę rekordów dla 1.2 (Linuxa) wykonujesz
  1. SELECT COUNT(*)... ...WHERE ip LIKE '1.2%';
nieprawdaż, że proste?
Weles
No nie takie proste.

Bo:

Załóżmy że mam SubKategorię, i w niej chcę obliczyć rekordy to daję to np: "1.1%". Wtedy fakt, obliczyło by mi ile tematów jest w tym dziale.
Ale co jeśli już będę miał SubKategorię - SubKategorii ? - Wtedy ona policzy mi ile jest rekordów włącznie z rekordami w tamtej SubKategorii wyższej - A w końcu potrzebne jest 1 zapytanie do wszystkiego, ponieważ może być np 100 subkategorii w subkategoriach.. i wtedy one muszą liczyć rekordy wyłącznie w sobie i w subkategoriach które są w nich.

Myślę że dobrze napisałem ^^

Pozdrawiam.
greycoffey
Ile rekordów w ogóle
  1. SELECT COUNT(*)... ...WHERE ip LIKE '%';

Ile rekordów w kategorii:
  1. SELECT COUNT(*)... ...WHERE ip LIKE '1%';

Ile rekordów w subkategorii:
  1. SELECT COUNT(*)... ...WHERE ip LIKE '1.2%';

Ile rekordów w subsubkategorii:
  1. SELECT COUNT(*)... ...WHERE ip LIKE '1.2.3%';

I tak dalej, a jak pobrać ilość rekordów dla subkategorii subkategorii np. 1.2, dodajesz krpokę, czyli:
  1. SELECT COUNT(*)... ...WHERE ip LIKE '1.2.%';

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.