Page 1 sur 1

Position de joueurs (points)

Posté : 17 oct. 2011, 18:40
par Poinball
Bonjour ,

J'ai fait un tableau html/php qui est alimenté par une base de donné pour afficher les positions de joueurs par rapport a leur points.
Quand je sort les donnés en php, je lui demande de les trier " ORDER BY points ASC " pour qu'ils soient en ordre de pointage.
Pour afficher leur rang, je fais un auto incrémentation de la variable rang. Le probleme est que PhP ne calcule pas dans le bonne ordre le rang .. ils sort les donné comme il veut et ensuite il les classe en ordre de points .. ce qui donne des rang non valide ...

Voici mon code :
<?	
$rank = 1;
include 'connect_bdd.php';

$result = mysql_query("SELECT * FROM user ORDER BY points ASC") 
or die(mysql_error()); 

    while($row = mysql_fetch_array( $result )) {
	// Print out the contents of each row into a table
	$pseudo = $row['pseudo'];
	$points = $row['points'];
	$win = $row['win'];
	$lose = $row['lose'];
?>
 
	<tr class="tb7">
		<td height="10" width="45" valign="middle" align="center">
		<font face="Nyala" color="#C09D7A" size="4"><?= $rank; ?></font></td>
		<td height="10" width="157" valign="middle" align="center">
		<font face="Nyala" color="#C09D7A" size="4"><?= $pseudo; ?></font></td>
		<td height="10" width="63" valign="middle" align="center">
		<font face="Nyala" color="#C09D7A" size="4"><?= $points; ?></font></td>
		<td height="10" width="47" valign="middle" align="center">
		<font face="Nyala" color="#C09D7A" size="4"><?= $win; ?></font></td>
				<td height="10" width="46" valign="middle" align="center">
		<font face="Nyala" color="#C09D7A" size="4"><?= $lose; ?></font></td>

	</tr>
<? 
$rank++;
   } ?>

Voici le résultat :
Image

Comment je pourrais avoir les rangs en ordre de points??

Re: Position de joueurs (points)

Posté : 17 oct. 2011, 20:58
par Yunge
Essaye en définissant "$rank = $rank++;" avant l'affichage du tableau.

Re: Position de joueurs (points)

Posté : 17 oct. 2011, 21:54
par Poinball
Dans la While ?

Re: Position de joueurs (points)

Posté : 17 oct. 2011, 23:35
par Ryle
Ton code actuel ne se base absolument pas sur le résultat de la requête pour afficher le rang dans le tableau. Il se contente d'incrémenter une variable. Tu génères donc bien un tableau qui contiendra les rangs 1, 2, 3 etc. (voir le code source pour confirmation)

Je pense donc que tu as un script qui vient réordonner ton tableau après que celui-ci ait été généré, et c'est lui qui doit poser problème...

Ps : A noter par ailleurs que ton " ORDER BY points ASC " tri tes résultats par ordre croissant (donc de celui qui a le moins de points à celui qui a le plus de points... il serait donc plus logique de faire un DESC pour avoir le plus grand en premier)

Pps : si tu n'utilises pas les index numériques mais uniquement les noms des colonnes, mysql_fetch_assoc() est plus léger que mysql_fetch_array() ;)

Re: Position de joueurs (points)

Posté : 18 oct. 2011, 08:41
par Poinball
Personne aurais une idée de code pour les rangs ?? un array qui classerais les joueur et qui ajouterais le rang c'est possible ???

Re: Position de joueurs (points)

Posté : 18 oct. 2011, 10:40
par moogli
t'a essayé autre chose ?

Ryle te donne la solution.
Ta requête telle que tu la montre celle ci ordonne par point avec le plus petit en 1ère ce n'est pas ta capture d'écran.

Perso je t'aurais bien orienté vers les fonctions de fenêtrage de SQL mais mysql ne les implémente pas :mrgreen:

donc ce que tu a fait est bon seulement la requête ne l'est pas.

sinon tu peux utiliser la réponse de compète de Frédéric Brouard pour le faire en SQL
http://www.developpez.net/forums/d67657 ... ank-on-ne/ :mrgreen:

@+

Re: Position de joueurs (points)

Posté : 18 oct. 2011, 22:12
par Ryle
Je me demande si je devrais utiliser mon invisibilité pour combattre le crime ou pour faire le mal... :-k

Pour la requête sql de compète, ça peut effectivement servir, mais ça risque d'être plus compliqué à gérer que php si on veut par exemple attribuer un même rang à des ex-aequo :)

Re: Position de joueurs (points)

Posté : 18 oct. 2011, 23:13
par moogli
wé c'est sur, dommage que mysql_mysql n’implémente pas les fenêtres :/