Vous n'êtes pas identifié(e).
Pages : 1
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
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
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
voici le script qui permet de faire ce que je veux
$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
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
Super !!!
Merci xTG,
le echo $query m'affichait bien la requete mais grace à la ligne or die(mysql_error()) j'ai pu voir le vrai message d'erreur qui était simplement que le prénom ne pouvait contenir une valeur NULL
Merci encore
Osiris73
Salut Moogli,
merci pour ta réponse, alors j'ai un peu avancé sur mon problème:
J'ai donc 2 fichiers, formulaire.php et resultat.php.
Voici le contenu du fichier formulaire.php
<?php }
?>
<form action="resultat.php" method="post"><?php if (isset($_POST["NB_Joueur"]))
{
$NB_Joueur = htmlspecialchars($_POST["NB_Joueur"], ENT_QUOTES);
if ($NB_Joueur > 0)
{
$ID_Joueur = 1;
while ($NB_Joueur > 0)
{
echo '<label for="NOM_Joueur_'.$ID_Joueur.'">Nom du Joueur '.$ID_Joueur.'</label> <input type="text" name="NOM_Joueur_'.$ID_Joueur.'" id="NOM_Joueur_'.$ID_Joueur.'"><br>'."\n";
$ID_Joueur++;
$NB_Joueur--;
}
}
else
{
echo "Erreur !";
}
?>
<input value="OK" type="submit"></form>
<?php }
?>
Et voici le contenu de mon fichier resultat.php
$query = "INSERT INTO `tirageausort` (`Id`,`Prenom`,`Nom`,`Dispo`) VALUES (NULL,NULL,'".$_POST['NOM_Joueur_'.$i]."','0')";
?>
<br>
<?php echo $query;
$result = mysql_query($query);
}
Le problème c'est que quand je vais dans la table tirageausort il n'y a aucun champ rempli, elle reste vide
Est-ce que quelqu'un aurait une idée ?
Merci bcp
P.S: quelque précision Id s'auto-incrémente tout seul et j'ai mis $i à 4 pour des tests
Osiris73
Bonjour à tous,
J'ai une page qui me demande le nombre de joueur avec un bouton ENVOYER
en fonction de ce nombre je voudrais afficher le champ: nom du joueur 1
nom du joueur 2 etc ... selon en fait le nombre saisie dans la première question et tout cela dans la même page
Je ne sais pas si je suis clair ?
Par exemple, si on met comme réponse 3 à la question, j'aurais alors 3 champs textes qui apparaissent
avec "Nom du joueur 1?":
"Nom du joueur 2?" :
"Nom du joueur 3?" :
En tout cas par avance merci à vous
Osiris73
Pages : 1