Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP] Sumowanie wartości ze zmiennej
Frugo75
post 7.04.2014, 20:57:37
Post #1





Grupa: Zarejestrowani
Postów: 116
Pomógł: 0
Dołączył: 13.06.2013

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


Witam ponownie,

Czy może mi ktoś napisać, jak zsumować wartości istniejące w zmiennej?
W pętli foreach mam w zmiennej $points punkty cześciu różnych zawodników z danej kolejki. Jak mogę je zsumować?
Go to the top of the page
+Quote Post
vonski
post 7.04.2014, 21:17:53
Post #2





Grupa: Zarejestrowani
Postów: 292
Pomógł: 89
Dołączył: 27.12.2006
Skąd: Warszawa

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


Rozumiem, że $points jest tablicą? Jeśli tak to array_sum.


--------------------
Zend Certified Engineer | Microsoft Certified Professional: Programming in HTML5 with JavaScript & CSS3 | Blog
Go to the top of the page
+Quote Post
Frugo75
post 7.04.2014, 21:32:21
Post #3





Grupa: Zarejestrowani
Postów: 116
Pomógł: 0
Dołączył: 13.06.2013

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


Cytat(vonski @ 7.04.2014, 22:17:53 ) *
Rozumiem, że $points jest tablicą? Jeśli tak to array_sum.


Wyglada to tak:

  1.  
  2.  
  3. //Pobieram player_id
  4. $res = takeFromRoster();
  5.  
  6. foreach ($res as $resa) {
  7.  
  8. $id = $resa['player_id'];
  9.  
  10. //Pobieram punkty graczy o tym player_id
  11.  
  12. dbConnect();
  13. $result = mysql_query("SELECT SUM(score01) AS suma FROM players WHERE id = '$id'") or die(mysql_error());
  14.  
  15.  
  16. $wynik = mysql_fetch_array($result);
  17.  
  18. $points = $wynik['suma']."<hr>";
  19.  
  20.  
  21.  
  22. }
  23.  
Go to the top of the page
+Quote Post
vonski
post 7.04.2014, 21:44:43
Post #4





Grupa: Zarejestrowani
Postów: 292
Pomógł: 89
Dołączył: 27.12.2006
Skąd: Warszawa

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


  1. $points = $wynik['suma']."<hr>";

Co to jest?


Przed foreach daj:
  1. $points = 0;


A w pętli dodawaj kolejne punkty:
  1. $points = $points + $wynik['suma'];


Ten post edytował vonski 7.04.2014, 21:44:57


--------------------
Zend Certified Engineer | Microsoft Certified Professional: Programming in HTML5 with JavaScript & CSS3 | Blog
Go to the top of the page
+Quote Post
Frugo75
post 7.04.2014, 22:05:12
Post #5





Grupa: Zarejestrowani
Postów: 116
Pomógł: 0
Dołączył: 13.06.2013

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


Juz działa

  1. $res = takeFromRoster();
  2. $points = 0;
  3. foreach ($res as $resa) {
  4.  
  5. $id = $resa['player_id'];
  6.  
  7. //Pobieram punkty graczy o tym player_id
  8.  
  9. dbConnect();
  10. $result = mysql_query("SELECT SUM(score01) AS suma FROM players WHERE id = '$id'") or die(mysql_error());
  11.  
  12.  
  13. $wynik = mysql_fetch_array($result);
  14.  
  15. $points = $points + $wynik['suma'];
  16.  
  17.  
  18.  
  19. }
  20.  
  21. echo $points;


Dziękuję Ci kolego.

Ten post edytował Frugo75 7.04.2014, 22:09:53
Go to the top of the page
+Quote Post
Szymciosek
post 8.04.2014, 00:13:49
Post #6





Grupa: Zarejestrowani
Postów: 1 168
Pomógł: 126
Dołączył: 5.02.2010
Skąd: Świdnica

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


Czytałeś dokumentację oraz taką fajną czerwoną notkę? http://pl1.php.net/mysql_query
To tylko taka uwaga na przyszłość.
Go to the top of the page
+Quote Post
Frugo75
post 8.04.2014, 12:53:42
Post #7





Grupa: Zarejestrowani
Postów: 116
Pomógł: 0
Dołączył: 13.06.2013

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


Cytat(Szymciosek @ 8.04.2014, 01:13:49 ) *
Czytałeś dokumentację oraz taką fajną czerwoną notkę? http://pl1.php.net/mysql_query
To tylko taka uwaga na przyszłość.


To co radzisz? Na co sie przestawic?


Ostatni chyba problem, ale chyba do rozwiązania. Proszę o podpowiedz uzyskać efekt końcowy w postaci sumy naliczonych punktów do każdego team_id.
Już wyjaśniam mam dwie tabele

1. rosters
  1. id player_id position_id team_id club_id round_id
  2. 388 29 7 2 20 1
  3. 389 28 6 2 19 1


oraz

2. players
  1. id score01
  2. 1 12
  3. 2 23


Chcę teraz pobrać z rosters: player_id, team_id gdzie round_id = 1 , a następnie pobrać odpowiednio do player_id (rosters) id (z players), następnie pobrać odpowiednie wartosci ze score01 i je zsumować.

Innymi słowy chcę uzyskać sumę punktów dla danego team_id, a na tę sumę punktów składa się suma wartości ze score01. Na koniec - ale to już dam rade, chce te sumę wysłać do innego pola w innej tabeli.

Mam nadzieje ze zrozumiale napisalem.
Go to the top of the page
+Quote Post
plej
post 8.04.2014, 14:08:27
Post #8





Grupa: Zarejestrowani
Postów: 264
Pomógł: 11
Dołączył: 9.05.2011
Skąd: Gdańsk

Ostrzeżenie: (10%)
X----


Może zamiast:
  1. $points = $points + $wynik['suma'];

Daj:
  1. $pints += $wynik['suma'];


Zawsze trochę mniej kodu biggrin.gif

Edit


Do powyżej twojej wypowiedzi musisz zastosować inner join cos podobnego do tego:
select * from players inner join rosters on players.id = rosters.player_id

Możesz też na dwa zapytania zrobić
select * from players <- to w petli while
tu wybierasz id playera ($id)
i
select * from rosters where player_id=$id

itd...
Poczytaj o zapytaniach mysql troche.


Ten post edytował plej 8.04.2014, 14:14:15
Go to the top of the page
+Quote Post
Pyton_000
post 8.04.2014, 16:58:53
Post #9





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


Wydajniej, optymalniej, szybciej, bardziej elegancko będzie jak zbierzesz wszystkie ID userów i zrobisz 1 select:
  1. SELECT sum(score) FROM users WHERE id IN (1,2,3,4,5....)

Nie ma sensu zapychanie serwera gromadą zapytań skoro można to zrealizoawć 1 zapytaniem.
Go to the top of the page
+Quote Post
Frugo75
post 8.04.2014, 22:55:10
Post #10





Grupa: Zarejestrowani
Postów: 116
Pomógł: 0
Dołączył: 13.06.2013

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


Cytat(Pyton_000 @ 8.04.2014, 17:58:53 ) *
Wydajniej, optymalniej, szybciej, bardziej elegancko będzie jak zbierzesz wszystkie ID userów i zrobisz 1 select:
  1. SELECT sum(score) FROM users WHERE id IN (1,2,3,4,5....)

Nie ma sensu zapychanie serwera gromadą zapytań skoro można to zrealizoawć 1 zapytaniem.



Chyba troche nie to dostane co chcę. Oto kroki ktore mam w glowie:

1. Pobieram z tabeli rosters dane team_id (jeden user ma jeden team_id) oraz player_id
2. Kazdy team_id ma przypisanych szesciu zawodnikow (player_id)
3. W tabeli players każdy zawodnik ma score01, czyli punkty.
4. Chcę teraz pobrac te punkty od tych szesciu graczy, ZSUMOWAĆ je wstawić do zupelnie innej tabeli.


Cytat(Frugo75 @ 8.04.2014, 18:53:01 ) *
Chyba troche nie to dostane co chcę. Oto kroki ktore mam w glowie:

1. Pobieram z tabeli rosters dane team_id (jeden user ma jeden team_id) oraz player_id
2. Kazdy team_id ma przypisanych szesciu zawodnikow (player_id)
3. W tabeli players każdy zawodnik ma score01, czyli punkty.
4. Chcę teraz pobrac te punkty od tych szesciu graczy, ZSUMOWAĆ je wstawić do zupelnie innej tabeli.


Pomoże ktoś, proszę?
Go to the top of the page
+Quote Post
plej
post 11.04.2014, 00:15:46
Post #11





Grupa: Zarejestrowani
Postów: 264
Pomógł: 11
Dołączył: 9.05.2011
Skąd: Gdańsk

Ostrzeżenie: (10%)
X----


Nikt ci nie napisze kodowych kodów chyba że jak zapłacisz.
Podano Ci kilka przykładów więc musisz je wykorzystać. Skoro piszesz gre czy coś podobnego. Powinieneś znać się na zapytaniach do bazy i na php.
Pokaż co masz zrobione i wklej baze danych. Tu na forum nie piszą gotowych przykładów tylko pomagają poprawić twój przykład lub Cię na kierować.
"PHP i MySQL - Dla każdego" książka ma z 800stron ale lepszej nie czytałem może dlatego że pisana przez Polaka.
Go to the top of the page
+Quote Post
Szymciosek
post 11.04.2014, 12:41:26
Post #12





Grupa: Zarejestrowani
Postów: 1 168
Pomógł: 126
Dołączył: 5.02.2010
Skąd: Świdnica

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


Cytat(Frugo75 @ 8.04.2014, 13:53:42 ) *
To co radzisz? Na co sie przestawic?


W tej dokumentacji (znowu czerwone pole) jest też napisane z czego możesz korzystać. Mysqli lub PDO.
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 10:27