Vous n'êtes pas identifié(e).
Pages :: 1
Bonjour à tous,
Je vous explique mon problème, j'ai un classement de joueurs en fonction des votes et je voudrais tenir compte des égalités, par exemple, le 1er a 30 pts le 2eme à 20pts et le 3eme a 10pts
Voici ce que j'ai fait
$RechercheJoueur="SELECT * FROM `sondage_choix` WHERE `vote`>0 ORDER BY `vote` DESC";
$resultat = mysql_query($RechercheJoueur);
$lastScore = '';
$displayPos = 1;
$realPos = 1;
//je prends en compte les égalités de points
while ($data = mysql_fetch_array($resultat))
{
$prenom[$realPos]= $data['intitule'];
$currentScore = $data['nbr'];
if ($currentScore != $lastScore)
{
$displayPos = $realPos;
}
$lastScore = $currentScore;
//$prenom[$realPos]= $data['intitule'];
$realPos++;
}
$query1="SELECT * FROM `recompenses` WHERE `PRENOM` LIKE '".$prenom[1]."'";
$resultat1 = mysql_query($query1) or die(mysql_error());
$data = mysql_fetch_array($resultat1);
$prenom[1]= $data['PRENOM'];
$Pts_avant[1] = $data['PTS'];
$Pts_premier[1]=$Pts_avant[1]+30;
$query = "UPDATE `ifb_mysql`.`recompenses` SET `PTS`='".$Pts_premier[1]."' WHERE `PRENOM` LIKE '".$prenom[1]."'";
$result = mysql_query($query) or die(mysql_error());
$query2="SELECT * FROM `ifb_mysql`.`recompenses` WHERE `PRENOM` LIKE '".$prenom[2]."'";
$resultat2 = mysql_query($query2) or die(mysql_error());
$data = mysql_fetch_array($resultat2);
$prenom[2]= $data['PRENOM'];
$Pts_avant[2] = $data['PTS'];
$Pts_premier[2]=$Pts_avant[2]+20;
$query = "UPDATE `ifb_mysql`.`recompenses` SET `PTS`='".$Pts_premier[2]."' WHERE `PRENOM` LIKE '".$prenom[2]."'";
$result = mysql_query($query) or die(mysql_error());
$query3="SELECT * FROM `ifb_mysql`.`recompenses` WHERE `PRENOM` LIKE '".$prenom[3]."'";
$resultat3 = mysql_query($query3) or die(mysql_error());
$data = mysql_fetch_array($resultat3);
$prenom[3]= $data['PRENOM'];
$Pts_avant[3] = $data['PTS'];
$Pts_premier[3]=$Pts_avant[3]+10;
$query = "UPDATE `ifb_mysql`.`recompenses` SET `PTS`='".$Pts_premier[3]."' WHERE `PRENOM` LIKE '".$prenom[3]."'";
$result = mysql_query($query) or die(mysql_error());
Le probleme dans tout cela c'est si 2 gars sont à égalités de vote et ben il fait une distinction
Par exemple 3 votes pour le 1er
2 votes pour le 2eme
2 votes pour le 3eme
ben il fait quand meme une distinction par l'ordre alphabetique
si Paul à 3 votes
Alain à 2 votes
et Simon à 2 votes
alors Paul aura bien 30 pts
Alain aura bien 20 pts mais Simon aura LUI 10 pts et NON 20pts comme je le veux
Est-ce que quelqu'un aurait une idée sur la question ?
Merci bcp
osiris73
Hors ligne
Est-ce que quelqu'un aurait une idée sur la question ?
Voui.
Il faut mettre la table qui comporte la colonne discriminante pour le classement en auto-non-équijointure, de manière à compter, dans la deuxième occurrence de la table, le nombre de joueurs qui ont plus de points que celui de la ligne en cours.
Cette façon de faire attribuera le même rang à ceux qui ont le même nombre de joueurs ayant un score supérieur à eux..
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
Merci de me répondre,
Je t’avoue que je ne comprends pas trop la notion de
"classement en auto-non-équijointure"
peux-tu me donner un exemple de script qui illustre ton propos
Merci en tout cas de m'avoir répondu
Hors ligne
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
Bonjour Maljuna Kris,
J'ai essayé de faire la requete que tu m'avais indiqué à savoir
Alors sur ma table sondage_choix j'ai la colonne nbr qui est le nombre de vote pour le joueur
la colonne intitule correspond au prenom du joueur
voici le contenu de la table sondage_choix
intitule nbr
TOTO 7
TITI 6
TATA 6
TONTON 3
Quand je lance la requete il me donne le résultat suivant
nbr intitule rang
7 TOTO 1
6 TATA 3
6 TITI 3
3 TONTON 4
Le probleme est que le rang pour TITI et TATA ne correspond pas, il faudrait avoir le 2
Autre probleme
si les 2 premiers ont le meme nombre de vote, par exemple TOTO et TITI et bien la requete m'affiche
nbr intitule rang
7 TOTO 2
7 TITI 2
6 TATA 3
3 TONTON 4
du coup au lieu d'avoir le rang 1 qui s'affiche pour les 1er j'ai le rang 2 ??
merci de tout aide
Osiris73
Hors ligne
Pages :: 1