Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: sumowanie z petli
Forum PHP.pl > Forum > PHP
deejay3
ujmujac rzecz jak najkrocej...

mam stworzony skrypcik (gotowiec) z baza MySQL... , wyswietlanie pojedynczych "opis+ilosc" - nie ma problemu, chcialbym teraz w podsumowaniu dac sume "ilosc". poprzez 'echo' zwraca mi ciag liczb. liczby "ilosc" sa generowane przez PHP i nie sa usytuowane w bazie wiec polecenia SQL nie wchodza w gre.

przyklad

rzecz1 - 30
rzecz2 - 2
rzecz3 - 6

--------------
echo $ilosc;
--------------

3026



chce osiagnac:

suma ilosci: 38


jak zsumowac wartosci zwracane przez $ilosc? albo jak zamienic ten ciag liczb na tablice array aby zadzialalo polecenie array_sum(), w chwili obecnej zwraca mi blad ;/


z gory dzieki za odpowiedz dla bardzo poczatkujaceo winksmiley.jpg
Hazel
A nie możesz po prostu każdej liczby zapisać w zmiennej i dodac ich do siebie?
edit: no i zarzuć kod jakiś może winksmiley.jpg
deejay3
kodu jest zbyt wiele zeby go wrzucic, jak pisalem wczesniej jest to gotowiec wiec musialbym wrzucic kod z paru plikow a wyszlo by tego z 500 linijek biggrin.gif

jezeli chodzi o to "każdej liczby zapisać w zmiennej i dodac ich do siebie" wlasnie o takie cos mi chodzi, tylko jak to zrobic.... prosze o wytlumaczenie jak podrzednemu laikowi winksmiley.jpg
loff
Cytat(deejay3 @ 31.12.2007, 17:58:43 ) *
jezeli chodzi o to "każdej liczby zapisać w zmiennej i dodac ich do siebie" wlasnie o takie cos mi chodzi, tylko jak to zrobic.... prosze o wytlumaczenie jak podrzednemu laikowi winksmiley.jpg

No wiec jak laikowi: otwierasz edytor i wpisujesz kod. nie musisz dziekowac biggrin.gif

a powaznie nie znajac kodu moge Ci tylko poradzic domyslajac sie ze w petli wypisujesz - zrob sobie zmienna
$suma i dodawaj poszczegolne wartosci $ilosci
deejay3
Cytat(loff @ 31.12.2007, 17:14:51 ) *
a powaznie nie znajac kodu moge Ci tylko poradzic domyslajac sie ze w petli wypisujesz - zrob sobie zmienna
$suma i dodawaj poszczegolne wartosci $ilosci


robie zmienna $suma i co mam w tym wpisac? jezeli wpisze odczyt $ilosc to wyrzuca mi ciag liczb a nie pojedyncze liczby, wlasnie prosilbym o pomoc w tym, jak zrobic " zmienna $suma i dodawac poszczegolne wartosci $ilosci"?

jak wydobyc pojedyncza zmienna z tego ciagu oraz jak je pozniej zsumowac
phpion
Daj kod wypisujący te dane - bez tego to sobie można pogdybać.
deejay3
kod jest za dlugi i nie chce go przyjac forum. plik z kodem do pobrania TUTAJ


w pliku chyba dosc widocznie zaznaczylem "miejsce sumowania" oraz "ewentualne miejsce sumowania", zmienna do zsumowania $duration_str. zmienna jest pobierana z tabeli MySQL jako $duration, pozniej dzielona. Nie da sie z tabeli zsumowac kolumny poniewaz dane sa wybierane i selekcjonowane poprzez powyzszy kod wiec zostaje tylko sumowanie poprzez PHP. miejsce wskazane jako "miejsce sumowania" zwraca dokladne dane potrzebne do sumowania, z tym, ze jak pisalem wczesniej w postaci ciagu liczb. miejsce wskazane jako "ewentualne sumowanie" w ogole nie zwraca zmiennej $duration czy $duration_str.

szczerze powiedziawszy zalezalo by mi zeby docelowym miejscem wyswietlania sumy bylo wlasnie to miejsce EWENTUALNE, ale z braku laku i szybszego rozwiazania moze byc i na poczatku.

mysle, ze teraz problem przedstawiony jest bardziej jasno,

z gory dzieki za popdpowiedzi i sugestie
empuszek
dział przedszkole.....
Poczytaj sobie jakis poradnik jak sie liczby dodaje

php;
phpion
Cytat(deejay3 @ 1.01.2008, 19:11:28 ) *
kod jest za dlugi i nie chce go przyjac forum. plik z kodem do pobrania TUTAJ

Kod
Not Found
The requested URL /raport.rar was not found on this server.


Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.


Może wystarczy, że wkleisz te fragmenty, które oznaczyłeś.
deejay3
Cytat(phpion.com @ 1.01.2008, 16:53:54 ) *
Kod
Not Found
The requested URL /raport.rar was not found on this server.
Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.


Może wystarczy, że wkleisz te fragmenty, które oznaczyłeś.



LINK POPRAWIONY
Virti
  1. <?php
  2. //przed pętlą
  3. $suma = 0;
  4.  
  5. //wewnątrz pętli
  6. $suma += $ilosc;
  7.  
  8. //po pętli
  9. echo $suma;
  10. ?>


nie wiem, czy dobrze zrozumiałem. Nie widziałem tego kodu... wklej może samą pętlę?
phpion
Możliwe, że to będzie ten fragment kodu. Szukałem po prostu jakiejś pętli i trafiłem na to miejsce. Moje zmiany oznaczyłem // by phpion:
  1. <?php
  2. ...
  3. //echo "DATE: $dateYmd <br />\n";
  4.  
  5. // by phpion
  6. $suma = 0;
  7.  
  8. for ( $i = 0; $i < count ( $ev ); $i++ ) {
  9.  
  10.  
  11. // print out any repeating events that are before this one...
  12. while ( $cur_rep < count ( $rep ) &&
  13. $rep[$cur_rep]['cal_time'] < $ev[$i]['cal_time'] ) {
  14. if ( $get_unapproved || $rep[$cur_rep]['cal_status'] == 'A' ) {
  15.  
  16. if ( ! empty ( $rep[$cur_rep]['cal_ext_for_id'] ) ) {
  17. $viewid = $rep[$cur_rep]['cal_ext_for_id'];
  18. $viewname = $rep[$cur_rep]['cal_name'] . " (" .
  19. translate("cont.") . ")";
  20. } else {
  21.  
  22.  
  23. $viewid = $rep[$cur_rep]['cal_id'];
  24. $viewname = $rep[$cur_rep]['cal_name'];
  25. }
  26. $event_str .= event_to_text ( $viewid,
  27. $dateYmd, $rep[$cur_rep]['cal_time'], $rep[$cur_rep]['cal_duration'],
  28. $viewname, $rep[$cur_rep]['cal_description'],
  29. $rep[$cur_rep]['cal_status'], $rep[$cur_rep]['cal_priority'],
  30. $rep[$cur_rep]['cal_access'], $rep[$cur_rep]['cal_login'] );
  31.  
  32. // by phpion
  33. $suma += $rep[$cur_rep]['cal_duration'];
  34.  
  35.  
  36. }
  37. $cur_rep++;
  38.  
  39. }
  40.  
  41. // by phpion
  42. echo '<h1>Suma: '.$suma.'</h1>';
  43.  
  44. if ( $get_unapproved || $ev[$i]['cal_status'] == 'A' ) {
  45. ...
  46. ?>
loff
  1. <?php
  2. if ( $duration > 0 ) {
  3. $duration_str = $duration/60 ;
  4.  
  5. /////////////MIEJSCE DODAWANIA///////////////////
  6.  
  7.  
  8. $suma= ($duration_str);
  9. echo $suma;
  10. ?>


Z tego co wyczytałem to zmienna $duration jest liczba minut a skoro $duration_str powstaje przez podzielenie jej przez 60 to jakim cudem jest z tego string ? Z drugiej strony w tym miejscu nie ma żadnej pętli. Być może chodzi Ci o to, że ta funkcja jest wywoływana dla każdego rekordu - tylko czemu wczesniej o tym nie wspomniałes. Jesli tak to albo bedziesz dodawał to gdzies na zewnatrz funkcji (być moze rozwiazanie phpion'a to to o co Ci chodzi) albo Twoja funkcja musi dodawac liczby do zmiennej ktora nie zniknie po wykonaniu funkcji.
deejay3
Cytat(loff @ 1.01.2008, 20:44:29 ) *
Z tego co wyczytałem to zmienna $duration jest liczba minut a skoro $duration_str powstaje przez podzielenie jej przez 60 to jakim cudem jest z tego string ?


tak jak pisalem wczesniej jestm podrzednym laikiem i.... nie mam zielonego pojecia sad.gif

Cytat(loff @ 1.01.2008, 20:44:29 ) *
Z drugiej strony w tym miejscu nie ma żadnej pętli. Być może chodzi Ci o to, że ta funkcja jest wywoływana dla każdego rekordu - tylko czemu wczesniej o tym nie wspomniałes.


wlasnie dlatego nie chcialem wklejac czesci kodu bo nei wiedzialem dokladnie co za co odpowiada i brakowalo mi w tym dokladnej petli. pisalem w jednym z poprzednich postow, ze "Nie da sie z tabeli zsumowac kolumny poniewaz dane sa wybierane i selekcjonowane poprzez powyzszy kod wiec zostaje tylko sumowanie poprzez PHP". tu wlasnie mialem na mysli to, ze sumuje rekordy, moze zle sie wyrazilem, ale na wytlumaczenie podkreslam jeszcze raz, ze jestem laikem winksmiley.jpg


Cytat(loff @ 1.01.2008, 20:44:29 ) *
Jesli tak to albo bedziesz dodawał to gdzies na zewnatrz funkcji albo Twoja funkcja musi dodawac liczby do zmiennej ktora nie zniknie po wykonaniu funkcji.


a jeszcze raz podkreslajac moj poziom PHP tu w ogole nie wiem o co chodzi... znaczy wiem o co chodzi tylko nie wiem jak to zastosowac w PHP winksmiley.jpg



co do rozwiazania PHPIONa, niestety... zwraca same 0 w takiej liczbie ile jest rekordow i tez w ciagu czyli 0000 itd, na moje rozumowanie wychodzi na to ze poprostu to nie ta petla ;/ ale po notorycznym przegladaniu kodu nie widze innej petli. jeszczce jedno co mi sie nasuwa to poczatkiowe 'function event_to_text' mzoe ta funkcja jest pare wykonywana juz nawet liczylem nawiasy ale nie moge sie polapac w ktorym miejscu ta funcja sie konczy ;/ za duzo tam zaleznosci jak na moje mozliwosci logiczne winksmiley.jpg ale byc moze wlasnie w tym gdzies tkwi sens.

dzieki za powyzsze podpowiedzi, przynajmnije mniejwiecej wiem teraz jak sie sumuje takie cyferki, wiem z czym mam kombinowac wiec walcze dalej, jednakze czekam na dalsze mozliwe rozwiazania.


BINGO

dzieki chlopaki yahoo.gif

dzieki waszym podoiwiedziom doszedlem do sedna sprawy. mianowicie (wg mojego rozeznania w PHP) za calosc "petli" odpowieada wlasnie wczesniej wspomniana przeze mnie "funkcja" dalem na samym poczatku jeszcze przed funkcja $suma = 0; w miejscu gdzie phpion umiescil "echo '<h1>Suma: '.$suma.'</h1>'" dalem sumowanie, ale inne niz phpiona a mianowicie:
  1. <?php
  2. $suma+=$ev[$i]['cal_duration']
  3. ?>

natomiast w miejscu EWENTUALNE SUMOWANIE dalem dopiero echo

i dziala przecudnie biggrin.gif

nie ma to jak metoda prob i bledow, ale bez Waszych podpowiedzi moglbym dalej kombinowac i rwac wlosy winksmiley.jpg

yahoo.gif

jeszcze raz wielkie dzieki
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.