Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] SUMOWANIE W PĘTLI
Forum PHP.pl > Forum > Przedszkole
nordi
Witam mam problem z sumowaniem liczb w pętli, zamiast sumowac jedna liczba do drugiej, te liczby wypisuja sie jedna obok drugiej. Oto funkcja ponioczej
  1. <?php
  2. function zliczk ($id) {
  3. global $_body;
  4.  
  5. $query_zlicz_kat="select id from zdjecia where idkat='$id'";
  6. $res_zlicz_kat=mysql_query($query_zlicz_kat);
  7. $ile_zlicz_kat=mysql_num_rows($res_zlicz_kat);
  8.  
  9. $query_zlicz="select id,idkat from kategorie where idkat='$id' and lang='pl'";
  10. $res_zlicz=$GLOBALS["mydb"]->query($query_zlicz);
  11. if($res_zlicz!=NULL) {
  12. while($ds_zlicz=$res_zlicz->getrow()) {
  13. $id=$ds_zlicz["id"];
  14. $idkat=$ds_zlicz["idkat"];
  15.  
  16. zliczk($id);
  17. }
  18. }
  19.  
  20. $saldo+=$ile_zlicz_kat; 
  21. echo $saldo ;
  22.  
  23. }
  24. ?>


w wyniku: 1 20 0 0 0 0

a powinno byc 21, moze ktos pomoc?

Pozdrawiam
Sedziwoj
A dlaczego $saldo nie jest globalną?
Pomijając fakt że nawet nie chce mi się tego analizować, bo to wszystko jakieś poplątane jest. (i dało by się pewnie zrobić jednym zapytaniem do bazy [takie mam wrażenie])
nordi
Po dodaniu global $saldo; zaczał sumowac jeszcze gorzej, to znaczy zamiast dla przykładu, kiedy wypisywał liczby
2 0
47 0

wypisuje teraz
2 0
49 0

Dziwna sprawa
tomekp
Napisz dokładnie co ta funkcja ma robić bo ja z tego nic nie rozumiem blinksmiley.gif
Sedziwoj
Bo masz to źle zrobione.
zlicza już jak widzisz dobrze, 2+47=49, tylko że echo wypisuje przy każdej rekurencji.
I radzę sprawdzic sobie do czego służy w SQL COUNT() oraz GROUP BY.
nordi
Ta funkcja ma zliczac zdjecia w odpowiednich kategorach i je sumowac, te kategorie są rozgałezione, dla przykładu

MUZYKA (0 WPISÓW)
-- MUZYKA POP (0 WPISÓW)
--- WYKONAWCA 1 (20 WPISÓW)
--- WYKONAWCA 2 (1 WPIS)


czyli powinno policzyć i pokazać ile zdjęc jest:

MUZYKA - 21
-- MUZYKA POP - 21
--- WYKONAWCA 1 - 20
--- WYKONAWCA 2 - 1

Dla muzyki pokazuje
1 20 0 0

Dla Muzyka Pop pokazuje
1 20 0

A dla wykonawca 1 pokazuje
20

A dla wykonawca 2 pokazuje
1


Mam nadzieje, ze teraz coś jaśnie ukazałem.
Sedziwoj
Masz to robione rekurencyjnie ale funkcja powinna zwracać wartość znalezioną wtedy możesz sumować to co jest w środku.
nordi
Nic to nie zmieniło, chyba ze robie źle, można więcej szzegołów i przykładów?
Ziels
A ja z innej beczki - zamiast miliona zapytań które zawdzięczasz rekurencji nie łatwiej zrzucić sobie tabelkę do tablicy php i operować na niej?
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.