[PHP] MySQL results verrekenen

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb een gameservertje dat elke keer als het level veranderd een nieuwe entry in een tabel maakt met daarin:

Nickname, GamehashID, score, kills, suicides, enz

tabelstructuur:
Afbeeldingslocatie: http://zakkenwasser.nl.eu.org/media/Misc/GoT/TableStructure.png
Oeps! er hoort nog een entry Timestamp te staan.. iets tever gecropped.. maar die is er dus wel :Y)

nu heb ik al een simpel PHP scriptje dat de data uit die tabel haalt en die geeft nu ook netjes onderstaande output

code:
1
2
3
4
5
6
7
8
9
10
Name:Sir.Lag-A-Lot - Last seen:2007-06-14 11:08:07 - Score:5 - Kills:1 - Deaths:0 - Suicides:0.
Name:Sir.Lag-A-Lot - Last seen:2007-06-14 11:28:49 - Score:57 - Kills:16 - Deaths:11 - Suicides:4.
Name:Prowler[EST] - Last seen:2007-06-14 11:28:49 - Score:22 - Kills:5 - Deaths:3 - Suicides:0.
Name:?????1103 - Last seen:2007-06-14 19:37:32 - Score:0 - Kills:0 - Deaths:0 - Suicides:0.
Name:?????1103 - Last seen:2007-06-14 19:58:55 - Score:0 - Kills:0 - Deaths:0 - Suicides:0.
Name:«KAP»|)UST - Last seen:2007-06-14 21:15:25 - Score:0 - Kills:1 - Deaths:6 - Suicides:1.
Name:Silviu-Ro - Last seen:2007-06-14 21:15:25 - Score:0 - Kills:0 - Deaths:0 - Suicides:0.
Name:PIP - Last seen:2007-06-14 21:15:25 - Score:29 - Kills:6 - Deaths:1 - Suicides:0.
Name:ydy - Last seen:2007-06-14 21:35:51 - Score:101 - Kills:29 - Deaths:38 - Suicides:2.
Name:PIP - Last seen:2007-06-14 21:35:51 - Score:175 - Kills:40 - Deaths:25 - Suicides:0.


phpcode zoals ik die nu heb:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?
// Configfile met SQL Logingegevens en DB selectie :-)
require("stoereconfigdir/stoereconfig.inc.php");
// De kweerie
$mainquery = mysql_query("SELECT * FROM cTDMscores");
// Rijtjes in een array  
while ($row = mysql_fetch_array($mainquery)) 
{
    // ik had hier nog een kweerie met wat SUM(veldnaam) as NieuweVeldnaam staan
    // en echo's die daarnaar verwezen maar dat wilde niet echt :(
    // dus voorlopig heb ik alleen nog maar dit:
    echo "Name:".$row['player_name']." - ";
    echo "Last seen:".$row['timestamp']." - ";
    echo "Score:".$row['player_score']." - ";
    echo "Kills:".$row['player_kills']." - ";
    echo "Deaths:".$row['player_deaths']." - ";
    echo "Suicides:".$row['player_suicides']."."; 
    echo "<br>";
}              
?>


zoals ik in de bovenstaande comments al laat merken heb ik enigzins al gespeeld met de SUM() functie van MySql maar dat leverde op het moment dat ik daar een ouput van wilde genereren alleen maar errors op en niet werkende query's :(

Kan iemand mij een zetje in de goede richting geven om de dubbelle resultaten uit te filteren en alle scores, kills enz bij elkaar op te tellen?

ik hoef geen hapklare oplossing maar na een aantal uren van alles proberen word het een beetje frustrerend :)

een van de dingen die ik dus al geprobeerd heb is de onderstaande query
code:
1
2
3
4
5
6
SELECT SUM(player_score) AS sum_player_score, 
SUM(player_kills) AS sum_player_kills, 
SUM(player_deaths) as sum_player_deaths, 
SUM(player_suicides) AS sum_player_suicides 
FROM `cTDMscores` 
WHERE `player_id` = "$row['player_id']"


Maar dat wilde hoe ik m ook toepassen niet werken :(

[ Voor 1% gewijzigd door Verwijderd op 18-06-2007 16:33 . Reden: c/p foutje ]


Acties:
  • 0 Henk 'm!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
ik hoef geen hapklare oplossing
OK, geen hapklare oplossing, maar wel het beste zetje dat je kan krijgen: aggregate functions moet je gebruiken in samenwerking met een group by clause.

{signature}


Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 02:21

Janoz

Moderator Devschuur®

!litemod

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 19:51

Creepy

Tactical Espionage Splatterer

Wat overigens ook netjes uitgelegd staat in onze FAQ:

Programming FAQ - SQL

[/traaaaaaag]

[ Voor 7% gewijzigd door Creepy op 18-06-2007 16:41 ]

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
PHP:
1
2
3
<?
$mainquery = mysql_query("SELECT `player_name`, `player_id`, SUM(player_score) AS player_score, SUM(player_kills) AS player_kills, SUM(player_deaths) AS player_deaths, SUM(player_suicides) AS player_suicides, MAX(timestamp) as timestamp FROM `cTDMscores` GROUP BY `player_id`"); 
?>


mijn dank is zeer groot Voutloos!

Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 02:21

Janoz

Moderator Devschuur®

!litemod

Je query klopt nog niet helemaal. Ja, mysql slikt hem, maar zoals je in de faq kunt lezen hoor je alle niet agregerende velden in je group by op te nemen. Naast player_id zou daar dus ook player_name moeten staan.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
hier kwam ik net achter voor ik de thread weer ververste maartoch bedankt! :)

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
feestelijk bedankt voor het meedenken en dit is ervan gekomen :)

http://games.xs4all.nl/stats/fear/
Pagina: 1