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
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"
pour mettre à jour une partie de la table avec le résultat à chaque fois qu'un joueur a terminé une 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

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
Après ces corrections éventuels je vous demanderai comment je dois faire pour que ce calcul ne soit pas dans une table.
à 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.