Page 1 sur 2

une position dans un classement !

Posté : 30 déc. 2006, 14:34
par Invité
Bonjour, je cherche le moyen de noter une position dans un classement ! J'ai trouvé ceci sur le net :

http://blog.plumbr.net/index.php/post/2 ... ons-en-SQL

Mais je ne comprend pas tellement ce qu'il faut faire,dois je créer un champ nommé "position" ?

Si quelqu'un pourrait m'aider,ce serait gentil :)

Merci

Posté : 30 déc. 2006, 16:21
par Invité
Bon,j'ai commencer a faire un ptit code mais y'a des erreurs :
<?php
$pio ="SELECT rond FROM membres WHERE pseudo='$pseudo'; 
$poi ="SELECT COUNT(*) FROM membres WHERE rond >'$rond'; 
$asf = mysql_query ($pio) or die('Erreur SQL !<br />'.$pio.'<br />'.mysql_error());
$agt = mysql_query ($poi) or die('Erreur SQL !<br />'.$poi.'<br />'.mysql_error());
$asv = mysql_fetch_array($agt, $asf);
$lmp = $asv;
?>
C'est presque comme ca mais j'ai franchement besoin d'aide !

La 1ere requete regarde combien de rond a le membre identifier, puis la seconde requete regarde le nombre de rond que les autres membres ont sur leur compte !

Posté : 30 déc. 2006, 16:53
par jojolapine
dans ton code, tu as une erreur, il manque un " à la fin de la première requête
ensuite,
je ne comprend pas trop avec quel critère tu souhaites trier tes membres ?
Les membres ayant le plus de rond sont les meilleurs c'est ça ?

ps: quelle version de mysql as-tu?

Posté : 30 déc. 2006, 16:58
par Invité
J'ai la version : 4.1.11

En faite,je ne veut pas enregistrer le classement mais seulement afficher sur une page la position par rapport a son nombre de "rond" !

Par exemple , Vous êtes en 1 ere position avec 499 rond !

Posté : 30 déc. 2006, 17:02
par jojolapine
essaye quelquechose comme ceci:
$poi ="SELECT COUNT(*) FROM membres WHERE rond >(SELECT rond FROM membres WHERE pseudo='$pseudo)";

Posté : 30 déc. 2006, 17:09
par Invité
Je vient de faire cela :
<?php 
$poi ="SELECT COUNT(*) FROM membres WHERE rond >(SELECT rond FROM membres WHERE pseudo='$pseudo')"; 
$asy = mysql_query ($poi) or die('Erreur SQL !<br />'.$poi.'<br />'.mysql_error());
$aqd = mysql_fetch_array($asy);
$plo = $aqd;
?>
<?php echo $aqd ?>
Et cela m'écrit : Array !

Posté : 30 déc. 2006, 17:14
par jojolapine
c'est normal, essaye plutôt print_r pour connaitre le contenu de $aqd

Posté : 30 déc. 2006, 17:22
par Invité
j'ai donc fait :
print_r ($aqd);
et là,j'ai un truc bizarre :
Array ( [0] => 0 [COUNT(*)] => 0 )
Et je fait :
$essai = $aqd['COUNT(*)'];
Il m'affiche 0

Posté : 30 déc. 2006, 17:24
par jojolapine
essaye de faire fonctionner cette requête déja

Code : Tout sélectionner

SELECT rond FROM membres WHERE pseudo='$pseudo'
va dans phpmyadmin par exemple, et fait des essais, si elle marche, alors essaye les deux requêtes ensembles

Posté : 30 déc. 2006, 17:32
par Invité
Je vient d'essayer !

résultat : En faite,on demande au script de compter le nombre de membre qui ont un score inférieur au membre identifier !

Posté : 30 déc. 2006, 17:34
par jojolapine
Je vient d'essayer !

résultat : En faite,on demande au script de compter le nombre de membre qui ont un score inférieur au membre identifier !
tu m'expliques là :shock:

Posté : 30 déc. 2006, 17:38
par Invité
En faisant ca :
SELECT COUNT(*) FROM membres WHERE rond >(SELECT rond FROM membres WHERE pseudo='$pseudo')";  
Cette requete sélectionne tout les membres qui ont un score (rond) supérieur a $pseudo !

Voilà pourquoi il m'affiche 0 du faite que j'ai le score le plus haut pour mes essai !

Et si j'inverse > par < , il m'affiche 2 car j'ai 2 membres inférieur au score le plus haut !

Donc,ce n'est pas ca pour afficher la position :(

Posté : 30 déc. 2006, 17:44
par jojolapine
ben il suffit de rajouter 1 au résultat, et tu as ta position.... qu'ets-ce qui te gène... ?

Posté : 30 déc. 2006, 17:51
par Invité
:lol:

Rien ne me gene au contraire...

J'avait pas trop compris :oops:

Un grand merci pour ton aide :wink:

Posté : 30 déc. 2006, 17:54
par jojolapine
derien ;-)
on laissera à un modérateur le soin de mettre [résolu]