cs_cy4nur3
Messages postés17Date d'inscriptionmardi 3 mai 2005StatutMembreDernière intervention27 mai 2010
-
18 mai 2010 à 14:46
cs_cy4nur3
Messages postés17Date d'inscriptionmardi 3 mai 2005StatutMembreDernière intervention27 mai 2010
-
19 mai 2010 à 09:28
Bonjour à toutes et a tous,
Je me permets de vous ecrire parce que je rencontre une diffculté dans la programmation de ma page Web en php.
Je dois créer une page qui génére un numéro d'appariement.
Je m'explique, une personne s'inscrit à un tournois.
Une fois que le tounois est clos, je dois générer un numero d'appariement en fonction des personnes inscrites selon leur classement.
Le classement doit fait par ordre decroissant
La personne qui a le classement le plus elevé obtient 1.
Si j'ai:
Toto qui a un classement de 1500
Zozo qui a un classement de 1000
AAAA qui a un classement de 2850
BBBB qui a un classement de 300
Resultat que je cherche a obtenir:
AAAA qui a un classement de 2850 obtient le n° 1
Toto qui a un classement de 1500 obtient le n° 2
Zozo qui a un classement de 1000 obtient le n° 3
BBBB qui a un classement de 300 obtient le n° 4
Concretement j'aimerai que ce chiffre 1 pour le joueur AAAA vienne se mettre dans la table inscription ainsi que pour tous les autres joueurs.
Merci de votre aide.
PS: j'ai la derniere version de MYSQL ainsi que PHP.
Arto_8000
Messages postés1044Date d'inscriptionlundi 7 mars 2005StatutMembreDernière intervention13 juillet 20107 19 mai 2010 à 02:08
Il faut que tu fasses un update plus ciblé si ta condition est trop générique et s'applique à plusieurs lignes, toutes ces lignes vont être modifiées.
Si tu veux être précis, il faudrait que tu rajoutes la clé primaire dans ta condition de ton update. En fait, seule la clé primaire est nécessaire pour être précis et modifier seulement la ligne que tu veux modifier.
<?php
$numero = 1;
$resultat mysql_query("SELECT * FROM `inscription` where `tournois_id`1 order by joueurs_classement DESC");
while ($row = mysql_fetch_assoc($resultat))
{
$numero++;
$resultat2 mysql_query("UPDATE `inscription` SET `num_appariement` '".$numero++."' where inscription_id=" . $row['inscription_id'] . ";");
}?>
cs_cy4nur3
Messages postés17Date d'inscriptionmardi 3 mai 2005StatutMembreDernière intervention27 mai 2010 18 mai 2010 à 15:38
j'arrive a faire un trie par ordre decroissant des joueurs mais ce que je n'arrive pas a faire c'est la gestion des points...
Le joueur qui a le plus haut classement obtient 1
Le joueur qui a un classement inférieur au premier obientient 2
Le joueur qui a un classement inférieur au second obientient 3
ainsi de suite...
Je n'arrive pas générer le code qui me permet de faire ca.
cs_cy4nur3
Messages postés17Date d'inscriptionmardi 3 mai 2005StatutMembreDernière intervention27 mai 2010 18 mai 2010 à 15:48
Voici la requete que je fait pour avoir L'id des joueurs,l'id du tournois,le num_appariement,son classement, son nom
SELECT inscription.joueurs_id, inscription.tournois_id, inscription.num_appariement, joueurs.joueurs_classement, CONCAT_WS( ' ', joueurs_nom, `joueurs_prenom` ) AS joueur
FROM joueurs, inscription, tournois
WHERE joueurs.joueurs_id = inscription.joueurs_id
AND tournois.tournois_id = inscription.tournois_id
AND tournois.tournois_id =1
ORDER BY joueurs.joueurs_classement DESC
Vous n’avez pas trouvé la réponse que vous recherchez ?
Arto_8000
Messages postés1044Date d'inscriptionlundi 7 mars 2005StatutMembreDernière intervention13 juillet 20107 18 mai 2010 à 16:22
Quand tu vas récupérer tes résultats, étant donné qu'ils sont déjà triés par classement, tu peux leur assigner le numéro quand tu fais le traitement dans ton code php.
<?php
$numero = 1;
$resultat = mysql_query('... ton SQL ...');
while ($row = mysql_fetch_assoc($result)) {
echo 'Le numéro de ', $row['joueur'], ' est ', $numero;
$numero++;
}
?>
cs_cy4nur3
Messages postés17Date d'inscriptionmardi 3 mai 2005StatutMembreDernière intervention27 mai 2010 18 mai 2010 à 16:31
C'est un bon début, et je te remercie pour le bout de code...
mais ce n'est pas exactement ce qu'il me faut.
il faut que ca alimante ma base.
En fait il faut, je pense, faire aussi un update...pour avoir ce n° dans ma base. apres j'en ai desoin pour la suite...
Arto_8000
Messages postés1044Date d'inscriptionlundi 7 mars 2005StatutMembreDernière intervention13 juillet 20107 18 mai 2010 à 17:01
Tu n'es pas obligé d'avoir ce champs dans ta base de données puisque tu peux toujours le calculé. Si tu as besoin de le calculer pour un joueur en particulier, tu peux toujours passer par une requête select imbriqué qui calcule le nombre de personne qui ont une cote plus élevé que la personne pour le tournoi. Quelque chose dans le genre :
Voici le code PHP ma ca mets pas le bon resultat dans num_appariement:
$numero = 1;
$resultat mysql_query("SELECT * FROM `inscription` where `tournois_id`1 order by joueurs_classement DESC");
while ($row = mysql_fetch_assoc($resultat))
{
$numero++;
$resultat2 mysql_query("UPDATE `inscription` SET `num_appariement` '".$numero++."' where tournois_id=1;");
}
cs_cy4nur3
Messages postés17Date d'inscriptionmardi 3 mai 2005StatutMembreDernière intervention27 mai 2010 19 mai 2010 à 09:19
Bonjour,
Nous sommes sur la bonne voix.. le seul petit soucis maintenant c'est qu'au lieu de me mettre les numéros d'appariement dans la bon ordre du type 1,2,3,4 il me mets 2,4,6,8...