Hoi,

Ik ben bezig met een hoogste score lijst te maken en die werkt aardig alleen klopt er 1 ding nog niet.
Hij moet de score van hoog naar laag laten zien (er zijn meerdere spelers).

Als de score van speler 1 bijv. 300 is en van speler 2 bijv. 450 is laat hij netjes 450 zien als hoogste score.

Maar is de score van speler 1 bijv. 300 en van speler 2 bijv. 2950 dan zegt hij dat speler 1 bovenaan staat.

Het lijkt wel of hij dan sorteerd op het eerste getal, echter moet hij het hele getal berekenen.

De query die ik gebruik is:

$result = mysql_query("SELECT * FROM e107_tournaments_plays where tournament_id = $bereken ORDER by score DESC");

Iemand enig idee wat ik fout doe?

Gr. Kees.
Je zult er DECIMAL(10,2) van moeten maken, het tweede getal geeft het aantal decimalen aan.
The declaration syntax for a DECIMAL column is DECIMAL(M,D). The ranges of values for the arguments in MySQL 5.1 are as follows:

M is the maximum number of digits (the precision). It has a range of 1 to 65. (Older versions of MySQL permitted a range of 1 to 254.)

D is the number of digits to the right of the decimal point (the scale). It has a range of 0 to 30 and must be no larger than M.

Dat klopt alleen dan doet hij dat voor alles, ook voor scores die niet werken met cijfers achter de punt.
Dat is nu juist net het probleem :P

Dan krijg je dus dat dit:
230
2490
600.11
7067
80345.09
16

Dit wordt:
230.00
2490.00
600.11
7067.00
80345.09
16.00

Kijk hier maar eens:
http://computertalk.nl/plugins/tournaments/index.php

Gr. Kees.
Waarom niet gewoon alles afronden, dat is toch veel netter?
Het is mogelijk door bij het echo'en het nummer + 0 te doen. Dus:

<?php
echo $row['number'] + 0;
?>
- SanThe - op 24/07/2013 14:32:01

Waarom niet gewoon alles afronden, dat is toch veel netter?

Omdat bij enkele games het erom gaat hoe ver je bijv. een pinguin slaat (miles), en dan geldt dus ook het getal achter de komma.

Maar ik vraag me af of het mogelijk is die combinatie te kunnen doen, ja via varchar maar dan leest hij weer de hoogste scores niet goed uit...

Toevoeging op 24/07/2013 14:38:56:

Koen Vlaswinkel op 24/07/2013 14:33:23

Het is mogelijk door bij het echo'en het nummer + 0 te doen. Dus:

<?php
echo $row['number'] + 0;
?>


Hij moet bij sommige games wel getal achter de punt doen en bij sommige games niet.
Bij de echo even checken of de cijfers achter de komma > 0 zijn. Zo nee, echo je het als integer.
Ik heb het nu zeg maar zo:

$bereken = $_GET['t'];
$result = mysql_query("SELECT * FROM e107_tournaments_plays where tournament_id = $bereken ORDER by score DESC");



for($i=0; $i<$rows; $i++){
$row = mysql_fetch_array( $result );
$score= $row['score'];
$door= $row['player_id'];
$result2 = mysql_query("SELECT * FROM e107_user where user_id = $door");

$row2 = mysql_fetch_array( $result2 );
$naam= $row2['user_name'];
$text .= "
<td><left>".($i+1)."</left></td>
<td><left>".$score."</left></td>
<td><left>".$naam."</left></td>
</tr>
";
}

Hoe zou dat dan moeten worden?
Alvast enorm bedankt voor de hulp trouwens!

Gr. Kees.
Met een join kan je dat in één query:

SELECT
	t.score,
	t.player_id,
	u.user_name
FROM
	e107_tournaments_plays t
JOIN
	e107_user u ON t.player_id = u.user_id
WHERE
	t.tournament_id = 1234
ORDER BY t.score DESC

Ger van Steenderen op 24/07/2013 15:18:48

Met een join kan je dat in één query:

SELECT
	t.score,
	t.player_id,
	u.user_name
FROM
	e107_tournaments_plays t
JOIN
	e107_user u ON t.player_id = u.user_id
WHERE
	t.tournament_id = 1234
ORDER BY t.score DESC



Die code is idd een stuk netter zo, bedankt!
Blijft nog de vraag hoe het uitlezen moet als je zowel met als zonder achter de punt werkt.

Reageren