Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Sumowanie rekordów w pętli while ();
EastWest
post
Post #1





Grupa: Zarejestrowani
Postów: 35
Pomógł: 0
Dołączył: 1.08.2013

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


Hej. Mam takie cudo:
  1. $result = mysql_query("SELECT id FROM kGildie_guilds ");
  2. if(mysql_num_rows($result) > 0)
  3. {
  4. while($row = mysql_fetch_assoc($result))
  5. {
  6. $result2 = mysql_query("SELECT name FROM kGildie_players where guild_id=".$row['id']."");
  7. if(mysql_num_rows($result2) > 0)
  8. {
  9. while($row2 = mysql_fetch_assoc($result2))
  10. {
  11. $result3 = mysql_query("SELECT points FROM stats where player='".$row2['name']."'");
  12. if(mysql_num_rows($result3) > 0)
  13. {
  14. $punkty=(int)0;
  15. settype($punkty, int);
  16. while($row3=mysql_fetch_array($result3)){
  17. $s = $row3[0];
  18. settype($s, int);
  19. settype($punkty, int);
  20. $punkty = $punkty + $s;
  21. echo $punkty;
  22. }
  23. }
  24. }
  25. }
  26. }
  27. }


No niby powinienem otrzymać sumę punktów ale otrzymuje takie coś:
12481405554988
a powinienem otrzymać:
4195

Pomoże ktoś?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 12)
kw95s
post
Post #2





Grupa: Zarejestrowani
Postów: 36
Pomógł: 3
Dołączył: 10.07.2011

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


Zamiast $row3[0] wpisz $row3[wpisz nazwę]
Go to the top of the page
+Quote Post
EastWest
post
Post #3





Grupa: Zarejestrowani
Postów: 35
Pomógł: 0
Dołączył: 1.08.2013

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


Nadal to samo
Go to the top of the page
+Quote Post
rtech.projekty.p...
post
Post #4





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 24.06.2013

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


Podaj nam co się znajduje w $row3;
Najlepiej, jakbyś wyświetlił var_dump($row3) i var_export($var3) (wtedy będzie można sobie skopiować to co jest pobrane z bazy, wkleić do skryptu
i zobaczyć co się w kodzie dzieje).
Go to the top of the page
+Quote Post
b4rt3kk
post
Post #5





Grupa: Zarejestrowani
Postów: 1 933
Pomógł: 460
Dołączył: 2.04.2010
Skąd: Lublin

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


Rzeczywiście cudo, proponuje zastąpić te trzy zapytania jednym... O takim:

  1. SELECT g.id id_guild, SUM(s.points) FROM kGildie_guilds g JOIN kGildie_players p ON g.id = p.guild_id JOIN stats s ON p.name = s.name GROUP BY g.id


Tak w ogóle, w tabeli stats nie trzymaj nazwy playera, tylko jego id. Wykonaj powyższe zapytanie, wyświetl i powinno tam być to czego potrzebujesz (liczba pkt dla każdej gildii?).


--------------------
Jeśli pomogłem, kliknij proszę 'pomógł'. Dzięki.
Go to the top of the page
+Quote Post
EastWest
post
Post #6





Grupa: Zarejestrowani
Postów: 35
Pomógł: 0
Dołączył: 1.08.2013

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


Może wytłumaczę co chcę zrobić.
Mam 3 tabele: kGidlie_guilds, kGidlie_players i stats.
W tabeli kGidlie-guilds mam kolumnę punkty. Celem skryptu jest pobranie nazwy graczy i dopasawanie jej do odpowiedniej gildii. Po tym do gracza przypisywane są punkty z tabeli stats. Następnie sumuje punkty wszystkich graczy z danej gildii i wysyłam je do kgidlie_guilds do kolmuny punkty.
Tak wiem, mój kod jest zagmatwany, ale mam nadzieję, że z Waszą pomocą coś z tego wyjdzie.

Edit:
to otrzymałem z var_dump($row3);
bool(false)

a to z var_export($var3)
NULL

Ten post edytował EastWest 2.08.2013, 14:47:51
Go to the top of the page
+Quote Post
rtech.projekty.p...
post
Post #7





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 24.06.2013

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


Cytat(EastWest @ 2.08.2013, 15:45:32 ) *
Edit:
to otrzymałem z var_dump($row3);
bool(false)

a to z var_export($var3)
NULL

Czyli zapytanie nic nie zwraca.
Sumowanie więc nie może działać.
Go to the top of the page
+Quote Post
b4rt3kk
post
Post #8





Grupa: Zarejestrowani
Postów: 1 933
Pomógł: 460
Dołączył: 2.04.2010
Skąd: Lublin

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


To co opisałeś zrealizuje Ci napisane przeze mnie post wyżej zapytanie. Otrzymasz id gildii oraz sumę punktów.


--------------------
Jeśli pomogłem, kliknij proszę 'pomógł'. Dzięki.
Go to the top of the page
+Quote Post
EastWest
post
Post #9





Grupa: Zarejestrowani
Postów: 35
Pomógł: 0
Dołączył: 1.08.2013

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


Zapytanie wywołane przez pma wyswietla mi takie bład:
#1054 - Unknown column 's.name' in 'on clause'

Edit: Jak byś mógł to mi wytłumacz co dokładnie robi to zapytanie, bo nie chcę tylko kopiuj wklei a chcę się czegoś nauczyć

Ten post edytował EastWest 2.08.2013, 14:55:04
Go to the top of the page
+Quote Post
rtech.projekty.p...
post
Post #10





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 24.06.2013

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


Cytat(EastWest @ 2.08.2013, 15:54:01 ) *
Zapytanie wywołane przez pma wyswietla mi takie bład:
#1054 - Unknown column 's.name' in 'on clause'

Edit: Jak byś mógł to mi wytłumacz co dokładnie robi to zapytanie, bo nie chcę tylko kopiuj wklei a chcę się czegoś nauczyć

Bo w tabeli 'stats' nie masz kolumny 'name'.
Zmodyfikuj zapytanie.
Go to the top of the page
+Quote Post
b4rt3kk
post
Post #11





Grupa: Zarejestrowani
Postów: 1 933
Pomógł: 460
Dołączył: 2.04.2010
Skąd: Lublin

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


Pomyliłem nazwy komórek, zapytanie powinno wyglądać tak:

  1. SELECT g.id id_guild, SUM(s.points) FROM kGildie_guilds g JOIN kGildie_players p ON g.id = p.guild_id JOIN stats s ON p.name = s.player GROUP BY g.id


Jeśli dalej błąd to przedstaw definicję tabelek z bazy.

Zapytanie pobiera id gildii oraz sumę punktów (funkcja SUM) dal danej gildii, grupując po id gildii. JOIN-em dołączasz potrzebne tabele do wykonania tego działania.



--------------------
Jeśli pomogłem, kliknij proszę 'pomógł'. Dzięki.
Go to the top of the page
+Quote Post
EastWest
post
Post #12





Grupa: Zarejestrowani
Postów: 35
Pomógł: 0
Dołączył: 1.08.2013

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


Okej mam id gildii i punkty. Teraz jak zrobić zeby wyswietlić kolumny z tabeli kGildie-guilds
Pogubiłem sie w tym już ;D

Edit:
Okej poradziłem sobie.
Dzięki za pomoc.
Można zamknąć ; )

Ten post edytował EastWest 2.08.2013, 15:30:11
Go to the top of the page
+Quote Post
b4rt3kk
post
Post #13





Grupa: Zarejestrowani
Postów: 1 933
Pomógł: 460
Dołączył: 2.04.2010
Skąd: Lublin

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


Cytat(EastWest @ 2.08.2013, 16:07:23 ) *
Okej mam id gildii i punkty. Teraz jak zrobić zeby wyswietlić kolumny z tabeli kGildie-guilds
Pogubiłem sie w tym już ;D


Po SELECT masz nazwy kolumn, które chcesz pobrać, tak więc zmień:

  1. SELECT g.*, SUM(s.points)



--------------------
Jeśli pomogłem, kliknij proszę 'pomógł'. Dzięki.
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 Aktualny czas: 19.08.2025 - 21:59