PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 20-12-2010 14:59:38

osiris73
Membre
Inscription : 03-12-2010
Messages : 8

Classement avec point identique

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 =mysql_query( $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

Hors ligne

#2 20-12-2010 18:19:10

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : Classement avec point identique

Il faut traiter les positions avant de faire une quelconque mise à jour ! ^^'


$requete = "SELECT `id`, `victoire` FROM `joueur`"; // pas d'order dans ma méthode car je les classe via le php
$resultat =mysql_query( $requete );

$i=1;
$classement = array();
// Construction de classement
while($data = mysql_fetch_array($resultat))
{
  if( !empty($classement[$data['victoire']]) ) // il existe déjà une personne avec ce nombre de victoires
    array_push($classement[$data['victoire']],$data['id']); // ajout de notre Xeme personne
  else
    $classement[$data['victoire']] = array($data['id']); // ajout de la première personne trouvée avec ce nombre de victoires
}

Ainsi tu obtiens un tableau où tous les joueurs avec le même nombre de victoires sont regroupés.
Donc => une place pour un index du tableau, or chaque valeur du tableau est un tableau contenant le/les joueur(s) avec ce nombre de victoires.

Hors ligne

#3 21-12-2010 09:32:22

osiris73
Membre
Inscription : 03-12-2010
Messages : 8

Re : Classement avec point identique

voici le script qui permet de faire ce que je veux

<?php
$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

Hors ligne

#4 21-12-2010 10:21:05

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : Classement avec point identique

Saluton,
Tu sais ce que je pense de SELECT *...


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

Pied de page des forums