Bonjour
j'ai une table "classement_donne" ci dessous qui enregistre les resultats et calcul le classement d'une donne (d'un jeu de bridge).
Je sais, ne criais pas, j'ai déjà entendu qu'il ne fallait pas mettre de calcul dans une table
pour mettre à jour une partie de la table avec le résultat à chaque fois qu'un joueur a terminé une donne
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 1 idPrimaire int(11) AUTO_INCREMENT 2 id_donnes int(11) Index // donne le numéro de la donne 3 resultat int(11) // résultat d'un nombre "NMemescore" de joueur de la donne "id_donnes" 4 NscoreSup int(11) // nombre de joueur qui ont un résultat supérieur à "resultat" 5 NMemescore int(11) // nombre de joueur qui ont le même "resultat" 6 classement float // classement en pourcentage du "resultat" pour la donne "id_donne"
je dois mettre à jour NScore plus pour toutes les lignes dont "resultat" est inférieur au résultat du joueur.
j'ai écris ce code ci-dessous mais il me semble pas très correct je n'arrive pas à faire des requête imbriquée
Après ces corrections éventuels je vous demanderai comment je dois faire pour que ce calcul ne soit pas dans une table.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 //incremente NScoreSup pour les lignes inférieures à resutat $sql="SELECT NScoreSup, resultat FROM classement_donne WHERE id_donnes =".$id_donnes." AND resultat <".$resultat; $rep=$connexion->query($sql); while ($donnees = $rep->fetch()){ $NScoreSup=$donnees['NScoreSup']+1;//incremente NScoreSup pour chaque ligne inférieure à resutat $resultatInf=$donnees['resultat'];//récupére le resutatInf de chaque ligne inférieure à resutat echo ' NScoreSup : '.$NScoreSup.' pour le resultat inférieur '.$resultatInf. '<br />'; //update le NScoreSup de chaque ligne inférieure à resultat $sql2="UPDATE classement_donne SET NScoreSup=(".$NScoreSup.") WHERE id_donnes=".$id_donnes." AND resultat=".$resultatInf; $connexion->query($sql2); } $rep->closeCursor(); // Termine le traitement de la requête
à chaque nouveau résultat d'un joueur pour une donne ça va modifier le classement de cette donne et normalement j'afficherai le classement dans une page HTML . Mais n'importe qui peut venir demander à consulter le classement actualisé. Et en fin de journée le tournoi est terminé et ce classement dernier actualisé doit être gardé en mémoire sur disque dur pour qu'on puisse n'importe quel jour pouvoir le consulter.
Partager