[PHP] Classement en PHP avec points identique

Résolu/Fermé
osiris73 Messages postés 102 Date d'inscription lundi 24 janvier 2005 Statut Membre Dernière intervention 23 mars 2011 - Modifié par osiris73 le 20/12/2010 à 16:43
osiris73 Messages postés 102 Date d'inscription lundi 24 janvier 2005 Statut Membre Dernière intervention 23 mars 2011 - 21 déc. 2010 à 09:28
Bonjour à tous,

Je voudrais faire un classement qui tienne compte du nombre de victoire identique

voici mon code

[c]$requete = "SELECT * FROM 'joueur' ORDER BY VICTOIRE DESC";
$resultat = requete( $requete );

$i=1;
while($data = mysql_fetch_array($resultat))
{
$query='UPDATE 'joueur' SET 'CLASSEMENT'='.$i.' WHERE 'ID'='.$data['ID'].'';
$result = mysql_query($query) or die(mysql_error());
$i=$i+1;
}


mysql_close()/c

Par contre ce script ne tient pas compte des égalités de points ?

j'avoue que je n'ai pas trop d'idée sur la question

voici un exemple:

Alain à 15 victoires --> il est le premier
Paul à 10 victoires --> il se trouve 2eme
Antoine à 10 vitoires --> il est également 2eme
Christophe à 8 victoires --> il est 4ème

voilà ce que j'aimerais avoir

Si quelqu'un à une idée

Merci d'avance

Osiris73

2 réponses

coeus Messages postés 3019 Date d'inscription samedi 13 janvier 2007 Statut Membre Dernière intervention 19 juin 2013 119
20 déc. 2010 à 18:06
Je n'ai pas testé, il peut y avoir des erreurs, mais j'espère que tu comprendras mon intention et ma méthode... Et que tu sauras l'adapter à ta BDD ! ;-)

$requete = "SELECT * FROM 'joueur' ORDER BY VICTOIRE DESC";
$resultat = requete( $requete );

$lastScore = '';
$displayPos = 1;
$realPos = 1;

while($data = mysql_fetch_array($resultat)) {
	$joueur = $data['nom'];
	$currentScore = $data['score'];

	if ($currentScore != $lastScore) { $displayPos = $realPos; }
	$lastScore = $currentScore;

	print $joueur.' - '.$displayPos;
	$realPos++;
}

N'hésite pas si tu as des questions, j'imagine que ce n'est pas le script le plus clair du monde quant à ce qu'il est sensé faire ! :-S

J'ai fait ici que le résultat s'affiche par un print au lieu de mettre à jour la BDD. À toi d'adapter, ce n'est qu'une version "test" ;-)

Bonne chance !
2
osiris73 Messages postés 102 Date d'inscription lundi 24 janvier 2005 Statut Membre Dernière intervention 23 mars 2011 7
21 déc. 2010 à 09:28
Super

Merci coeus pour ta réponse

C'est exactement ce qui me fallait

Merci encore

Osiris73
0