Thread: PHP/SQL: Scores optellen
-
06-05-2004, 22:50 #1Member
- Registered
- 08/01/03
- Location
- Wevelgem
- Posts
- 1,801
- iTrader
- 178 (100%)
- Mentioned
- 0 Post(s)
- Reputation
- 0/4
PHP/SQL: Scores optellen
Ik zit met het volgende probleem:
Ik heb een lijst met spelletjes die de score opslaat in de database. Nu wil ik van iedere persoon al de hoogste scores per game optellen dat hij gespeeld heeft. Het volgende scriptje tell alle scores op. Hoe moet ik dit oplossen?
Database structuur:
***********************************
* USERID * GAMENR * SCORE * START *
***********************************
* 4 * 2 * 1520 * 1 *
* 4 * 5 * 322 * 1 *
* 4 * 7 * 1302 * 1 *
* 4 * 2 * 1110 * 1 *
* 4 * 2 * 2563 * 1 *
* 5 * 2 * 1558 * 0 *
* 4 * 6 * 4556 * 1 *
* 4 * 2 * 1563 * 1 *
* 5 * 2 * 1236 * 1 *
* 4 * 2 * 1550 * 1 *
* 5 * 1 * 1000 * 1 *
***********************************
<?
$result = mysql_query(" SELECT SUM(SCORE) AS test,userid FROM ".$prefix."score WHERE start = '1' GROUP BY userid ORDER BY test DESC") or die (mysql_error());
while($row = mysql_fetch_array($result)) {
echo "".$row["test"].",".$row["userid"]."";
echo "<br>";
}
?>
Alvast bedankt.no votes
-
-
06-05-2004, 23:38 #2
nieuwe code
<?
$result = mysql_query(" SELECT SUM(SCORE) AS test FROM ".$prefix."score WHERE start = '1' GROUP BY userid") or die (mysql_error());
if($row = mysql_fetch_array($result)) {
echo "".$row["test"].",".$row["userid"]."";
echo "<br>";
}
?>
1. wrm while gebruiken?
2. wrm de som als test en userid zetten?
3. wrm order by? ge gaat toch mr 1 lijn weergevenno votes
-
07-05-2004, 10:40 #3Member
- Registered
- 18/11/02
- Location
- Eke, Belgiƫ
- Posts
- 2,448
- iTrader
- 0
- Mentioned
- 0 Post(s)
- Reputation
- 0/0
Zijde daar zo zeker van oneliner ???
Het feit dat er een GROUP BY op userid gebeurt zegt al genoeg zeker?Nu wil ik van iedere persoon al de hoogste scores per game optellen dat hij gespeeld heeft.
Als ge nu nog es grouped op het gamenr moet dat toch lukken ?
En in plaats van SUM hebde MAX nodig, aangezien ge da hoogste scores per spel wilt:
Loopen en optellenCode:SELECT *, MAX(score) AS maximum FROM scores WHERE start = '1' GROUP BY userid, gamenr ORDER BY userid, gamenr, maximum DESC
Last edited by DarkBone; 07-05-2004 at 10:55.
no votes
-
07-05-2004, 19:18 #4
ahd het verkeerd verstaan
no votes
-
08-05-2004, 00:19 #5Member
- Registered
- 08/01/03
- Location
- Wevelgem
- Posts
- 1,801
- iTrader
- 178 (100%)
- Mentioned
- 0 Post(s)
- Reputation
- 0/4
Bedankt, ik zal het eens proberen.
no votes
-
08-05-2004, 15:43 #6Member
- Registered
- 08/01/03
- Location
- Wevelgem
- Posts
- 1,801
- iTrader
- 178 (100%)
- Mentioned
- 0 Post(s)
- Reputation
- 0/4
Omdat het niet in 1 keer gaat, heb ik iets anders gemaakt dat wel wel werkt.
Ik zal het hier posten. Je kan nooit weten dat iemand het nodig heeft.
PHP Code:<?
$i = 0;
$result = mysql_query(" SELECT max(score) as score,userid FROM ".$prefix."score WHERE start = '1' GROUP BY userid,gamenr ORDER BY userid DESC") or die (mysql_error());
while($row = mysql_fetch_array($result)) {
if($row["userid"] == $userid)
$score[$userid] += $row["score"];
else{
$i++;
$userid = $row["userid"];
$score[$userid] = $row["score"];
}
}
$i=0;
arsort($score);
while (list($player, $punten) = each($score) AND $i<5) { //5 geeft de 5 hoogste scores aan
echo "$player: $punten<br>\n";
$i++;
}
?>no votes
