AccueilAideRechercherIdentifiez-vousInscrivez-vous

Bienvenue, Invité. Veuillez vous connecter ou vous inscrire.
Avez-vous perdu votre courriel d'activation?
21 Mai 2012 à 22:06:22

Connexion avec identifiant, mot de passe et durée de la session
Rechercher
    avancée

News

Stats
8763 Messages dans 1087 Fils de discussion par 1000 Membres
Dernier membre: totor 94
+  PHP Astux
|-+  Langages Web
| |-+  PHP, ASP ... (serveur)
| | |-+  Classement en PHP avec points identiques
Pages: [1]   Bas de page
Imprimer
Auteur Fil de discussion: Classement en PHP avec points identiques  (Lu 873 fois)
osiris73
Néophyte
*
Messages: 5


« le: 20 Décembre 2010 à 15:13:43 »

Bonjour à tous,

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

voici mon code

Code:
$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
Journalisée
osiris73
Néophyte
*
Messages: 5


« Répondre #1 le: 21 Décembre 2010 à 09:42:09 »

Je me réponds
voici le script qui permet de faire ce que je veux


$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++;
}

Merci à coeus

Osiris73
Journalisée
Matthieu
Administrateur
Membre Héroïque
*
Sexe: Homme
Messages: 3461


Unreal Power...


WWW
« Répondre #2 le: 26 Décembre 2010 à 20:00:14 »

c'est une possibilité, effectivement, une autre est de lister tous les scores de manière unique et d'attribuer les places en fonction de ça ...

concrètement, une requête comme :
Code:
SELECT UNIQUE(VICTOIRE) FROM table ORDER BY VICTOIRE DESC;
te donnera tous les chiffres des victoires de manière unique. donc dans ton 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

ma requête retournera 15, 10, 8

après à toi de faire dans un fech array un classement ...

Code:
$classement = 1; // on commence par le premier, puisque les victoires sont triées en ordre décroissant
while ($data = mysql_fetch_array($resultset))
{
    // à chaque boucle du while, on augmente le classement
    $req = sprintf("UPDATE table SET classement='%d' WHERE score='%d';", $classement, $data['score']);
    mysql_query($req);
    $classement++;
}
Journalisée

Pages: [1]   Haut de page
Imprimer
Aller à:  

Powered by SMF 1.1.16 | SMF © 2011, Simple Machines
Amber design by Bloc | XHTML | CSS