Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Suma elementów tablicy
e-konrad
post
Post #1





Grupa: Zarejestrowani
Postów: 49
Pomógł: 0
Dołączył: 11.12.2008

Ostrzeżenie: (0%)
-----


Witam,
Od dłuższego czasu próbuję wykonać działanie sumy na elementach tablicy, dane z tablicy pozyskuję z bazy danych mysql. Mój kod
  1. $query = mysql_query("select t.customer_id as 'customer', SUM(ta.time_unit)*60 as 'czas'
  2. FROM ticket t
  3. left join time_accounting ta ON ta.ticket_id=t.id
  4. WHERE
  5. t.customer_id like '$klient' AND
  6. t.create_time BETWEEN '$data_od 00:00:00' AND '$data_do 23:59:59' AND
  7. ta.time_unit is NOT NULL
  8. GROUP BY t.customer_id");
  9. $allTime = array();
  10. while($row = mysql_fetch_assoc($query))
  11. {
  12. $allTime[] += $row['czas'];
  13. licz_czas($row['customer'],$row['czas']);
  14. }
  15. $total = array_sum($allTime);
  16. echo $total;

wynikiem jest wyświetlenie po kolei wszystkich elementów, w moim przypadku czasów.

Co jest nie tak?
Go to the top of the page
+Quote Post
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




nie: $allTime[] += $row['czas'];
a: $allTime[] = $row['czas'];

swoją drogą po grzyba mieszasz w to tablice??

  1. $suma = 0;
  2.  
  3. while($row = mysql_fetch_assoc($query))
  4.  
  5. {
  6.  
  7. $suma += $row['czas'];
  8.  
  9. licz_czas($row['customer'],$row['czas']);
  10.  
  11. }
  12.  
  13. echo $suma;
Powód edycji: [nospor]:
Go to the top of the page
+Quote Post
e-konrad
post
Post #3





Grupa: Zarejestrowani
Postów: 49
Pomógł: 0
Dołączył: 11.12.2008

Ostrzeżenie: (0%)
-----


zapytanie zwracało mi czas w postaci xx.xx, użyłem explode i dostosowałem pod Twój kod. Wypisało mi wartości.

  1. $suma = 0;
  2. while($row = mysql_fetch_assoc($query))
  3. {
  4. $czas = explode('.',$row['czas']);
  5. $suma += $czas[0];
  6. licz_czas($row['customer'],$row['czas']);
  7. }
  8. echo $suma;
Go to the top of the page
+Quote Post
nospor
post
Post #4





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




Jesli nadal nadal wypisuje ci kilka wartosci znaczy ze
albo ta linijka
licz_czas($row['customer'],$row['czas']);
cos wyswietla na ekran

albo kod co pokazales masz jeszcze w jakiejs petli wiec logiczne ze echo $suma wyswietli ci sie wiele razy
Go to the top of the page
+Quote Post
e-konrad
post
Post #5





Grupa: Zarejestrowani
Postów: 49
Pomógł: 0
Dołączył: 11.12.2008

Ostrzeżenie: (0%)
-----


całe zapytanie jest w funkcji które jest wykonywane tyle razy ilu jest klientów
Go to the top of the page
+Quote Post
nospor
post
Post #6





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




No to czemu sie dziwisz, ze suma wyswietla ci sie wielokrotnie? Skoro dla kazdego klienta liczysz i wyswietlasz sume, to dla kazdego sie wyswietli - logiczne
Go to the top of the page
+Quote Post
e-konrad
post
Post #7





Grupa: Zarejestrowani
Postów: 49
Pomógł: 0
Dołączył: 11.12.2008

Ostrzeżenie: (0%)
-----


inaczej tego nie rozwiążę ponieważ z jednej bazy pobieram klientów następnie na podstawie wyników(klientów) wyciągam dane z innej bazy danych(czasy)
Go to the top of the page
+Quote Post
nospor
post
Post #8





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




No ale ty czas chcesz sumowac dla kazdego klienta oddzielnie czy dla wszystkich razem?
Go to the top of the page
+Quote Post
e-konrad
post
Post #9





Grupa: Zarejestrowani
Postów: 49
Pomógł: 0
Dołączył: 11.12.2008

Ostrzeżenie: (0%)
-----


dla wszystkich razem
Go to the top of the page
+Quote Post
nospor
post
Post #10





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




No to skoro dla wszystkich razzem, to czemy wyswietlanei robisz w petli?
Wyswietlanie $suma masz robic poza główną petlą a nie w srodku, oraz zerowanie $suma=0 masz robic przed petlę główną a nie w srodku

A jesli tem kod $suma+=... jest w funkcji, to albo przekazuje $suma przez parametr, zwracaj i odbieraj, albo uzywaj global.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 7.10.2025 - 23:03