Problème avec Classement sportif automatisé

Petit nouveau ! | 5 Messages

15 juil. 2010, 15:57

Bonjour à tous,
je suis en train de réaliser un site sportif comprenant l'édition de résultats et une automatisation d'un classement!!

J'ai donc fait un formulaire permettant d'entrer les résultats puis lors du traitement de ce formulaire j'envois à la base de données les résultats des matchs correspondants à ceux rempli. Puis après je souhaite modifier une table nommée equipes qui me permet d'afficher le classement (la fonction d'affichage a déjà été réalisée).
Seulement, j'ai un petit soucis lors de mon traitement du nombre de victoires, défaites:
<?php
	//On remet à zéro toutes les variables dans le classement
	
	mysql_query('UPDATE equipes 
					SET Equipe_MJ=0,
						Equipe_V=0, 
						Equipe_Vp=0, 
						Equipe_D=0,
						Equipe_Dp=0,
						Equipe_Pts=0,
						Equipe_Plus=0,
						Equipe_Moins=0,
						Equipe_Diff=0
					WHERE Equipe_ChampID=1') or die (mysql_error());									

	//On récupère les variables
	for ($i=1 ; $i<=26 ; $i++)
	{
		for ($j=1 ; $j<8; $j++)
		{
			$Equipe1 = "equipe1_journee".$i."_match".$j."";
			$Equipe2 = "equipe2_journee".$i."_match".$j."";
			$enreg1 = "score1_journee".$i."_match".$j."";
			$enreg2 = "score2_journee".$i."_match".$j."";
			$enreg3 = "prolongation_journee".$i."_match".$j."";

			
			$EquipeDom = mysql_real_escape_string ($_POST[''.$Equipe1.'']);
			$EquipeVis = mysql_real_escape_string ($_POST[''.$Equipe2.'']);
			
			$equipe_dom_sql = mysql_query ('SELECT Club_ID FROM club WHERE Club_Nom = "'.$EquipeDom.'"') or die (mysql_error());
			$equipe_dom = mysql_fetch_assoc($equipe_dom_sql);
			$id_dom = $equipe_dom['Club_ID'];
			
													
			$equipe_vis_sql = mysql_query ('SELECT Club_ID FROM club WHERE Club_Nom = "'.$EquipeVis.'"') or die (mysql_error());
			$equipe_vis = mysql_fetch_assoc($equipe_vis_sql);
			$id_vis = $equipe_vis['Club_ID'];
			
			$equipeDom_sql = mysql_query ('SELECT * FROM equipes WHERE Equipe_ID = '.$id_dom.'') or die (mysql_error());
			$equipeDom = mysql_fetch_assoc($equipeDom_sql);
			$MJ_dom_avant = $equipeDom['Equipe_MJ'];
			$Vict_dom_avant = $equipeDom['Equipe_V'];
			$Def_dom_avant = $equipeDom['Equipe_D'];
			$Vict_prol_dom_avant = $equipeDom['Equipe_Vp'];
			$Def_prol_dom_avant = $equipeDom['Equipe_Dp'];
			$Pts_dom_avant = $equipeDom['Equipe_Pts'];
			$Plus_dom_avant = $equipeDom['Equipe_Plus'];
			$Moins_dom_avant = $equipeDom['Equipe_Moins'];
			$Diff_dom_avant = $equipeDom['Equipe_Diff'];

			$equipeVis_sql = mysql_query ('SELECT * FROM equipes WHERE Equipe_ID = '.$id_vis.'') or die (mysql_error());
			$equipeVis = mysql_fetch_assoc($equipeVis_sql);
			$MJ_vis_avant = $equipeVis['Equipe_MJ'];
			$Vict_vis_avant = $equipeVis['Equipe_V'];
			$Def_vis_avant = $equipeVis['Equipe_D'];
			$Vict_prol_vis_avant = $equipeVis['Equipe_Vp'];
			$Def_prol_vis_avant = $equipeVis['Equipe_Dp'];
			$Pts_vis_avant = $equipeVis['Equipe_Pts'];
			$Plus_vis_avant = $equipeVis['Equipe_Plus'];
			$Moins_vis_avant = $equipeVis['Equipe_Moins'];
			$Diff_vis_avant = $equipeVis['Equipe_Diff'];
			
			$ScoreDom = intval ($_POST[''.$enreg1.'']);
			$ScoreVis = intval ($_POST[''.$enreg2.'']);
			
			
			//Si un score a été rempli pour les deux équipes on met à jour la base de données avec l'id du vainqueur, les scores et la prolongation (valeur 1 si il y a eu)
			if ((empty($ScoreDom))&&(empty($ScoreVis)))
			{
			}
			else
			{
				if (isset($_POST[''.$enreg3.'']))
				{
					//Si il y a eu Prologation, on met la valeur 1 à la variable prol et on garde les valeur des victoires et defaites pas en prol
					$Prol = 1;
					$Vict_vis=$Vict_vis_avant;
					$Def_vis=$Def_vis_avant;
					$Vict_dom=$Vict_dom_avant;
					$Def_dom=$Def_dom_avant;

					if ($ScoreDom>$ScoreVis)
					{
						//Si l'équipe vainqueur est celle domicile, on incrémente la victoire en prol à domicile et la défaite en prol du visiteur d'un mais on garde la même valeur pour la defaite prol à domicile et victoire prol à l'extérieur
						$EquipeVainq = $id_dom;
						$Vict_prol_dom=$Vict_prol_dom_avant+1;
						$Def_prol_dom=$Def_prol_dom_avant;
						$Vict_prol_vis=$Vict_prol_vis_avant;
						$Def_prol_vis=$Def_prol_vis_avant+1;
					}
					else if ($ScoreDom<$ScoreVis)
					{
						//Si l'équipe vainqueur est celle exterieure, on incrémente la victoire en prol à l'exterieur et la défaite en prol à domicile d'un mais on garde la même valeur pour la defaite prol à l'exterieur et victoire prol à domicile
						$EquipeVainq = $id_vis;
						$Vict_prol_vis=$Vict_prol_vis_avant+1;
						$Def_prol_vis=$Def_prol_vis_avant;
						$Vict_prol_dom=$Vict_prol_dom_avant;
						$Def_prol_dom=$Def_prol_dom_avant+1;
					}
				}
				else
				{
					//Si il n'y a pas eu Prologation, on met la valeur 0 à la variable prol et on garde les valeur des victoires et defaites en prol
					$Prol = 0;
					$Vict_prol_vis=$Vict_prol_vis_avant;
					$Def_prol_vis=$Def_prol_vis_avant;
					$Vict_prol_dom=$Vict_prol_dom_avant;
					$Def_prol_dom=$Def_prol_dom_avant;
					
					if ($ScoreDom>$ScoreVis)
					{
						//Si l'équipe vainqueur est celle domicile, on incrémente la victoire à domicile et la défaite du visiteur d'un mais on garde la même valeur pour la defaite à domicile et victoire à l'extérieur
						$EquipeVainq = $id_dom;
						$Vict_dom=$Vict_dom_avant+1;
						$Def_dom=$Def_dom_avant;
						$Vict_vis=$Vict_vis_avant;
						$Def_vis=$Def_vis_avant+1;
					}
					else if ($ScoreDom<$ScoreVis)
					{
						//Si l'équipe vainqueur est celle exterieure, on incrémente la victoire à l'exterieur et la défaite à domicile d'un mais on garde la même valeur pour la defaite à l'exterieur et victoire à domicile
						$EquipeVainq = $id_vis;
						$Vict_vis=$Vict_vis+1;
						$Def_vis=$Def_vis_avant;
						$Vict_dom=$Vict_dom_avant;
						$Def_dom=$Def_dom_avant+1;
					}
				}
				
				// On incrément de 1 les matchs joués par l'équi domicile et exterieur
				$MJ_dom=$MJ_dom_avant+1;
				$MJ_vis=$MJ_vis_avant+1;
				
				mysql_query('UPDATE magnus 
								SET Magnus_Score_EquipeDom="'.$ScoreDom.'",
									Magnus_Score_EquipeVis="'.$ScoreVis.'", 
									Magnus_Vainqueur="'.$EquipeVainq.'", 
									Magnus_Prolongation="'.$Prol.'"
								WHERE Magnus_EquipeDom="'.$EquipeDom.'"
								AND Magnus_EquipeVis="'.$EquipeVis.'"') or die (mysql_error());
				
				//On calcule le nombre de points suivant cette règle: victoire (prol ou non) vaut 2 points et defaite en prol vaut 1 point. defaite vaut 0 point
				$Pts_dom=$Vict_dom*2+$Vict_prol_dom*2+$Def_prol_dom;
				//On calcul les buts marquées et encaissés puis on fait la différence
				$Plus_dom=$Plus_dom_avant+$ScoreDom;
				$Moins_dom=$Moins_dom_avant+$ScoreVis;
				$Diff_dom=$Plus_dom-$Moins_dom;
				
				mysql_query('UPDATE equipes 
								SET Equipe_MJ="'.$MJ_dom.'",
									Equipe_V="'.$Vict_dom.'", 
									Equipe_Vp="'.$Vict_prol_dom.'", 
									Equipe_D="'.$Def_dom.'",
									Equipe_Dp="'.$Def_prol_dom.'",
									Equipe_Pts="'.$Pts_dom.'",
									Equipe_Plus='.$Plus_dom.',
									Equipe_Moins='.$Moins_dom.',
									Equipe_Diff='.$Diff_dom.'
								WHERE Equipe_ID='.$id_dom.'') or die (mysql_error());									
			
				//On calcule le nombre de points suivant cette règle: victoire (prol ou non) vaut 2 points et defaite en prol vaut 1 point. defaite vaut 0 point
				$Pts_vis=$Vict_vis*2+$Vict_prol_vis*2+$Def_prol_vis;
				//On calcul les buts marquées et encaissés puis on fait la différence
				$Plus_vis=$Plus_vis_avant+$ScoreVis;
				$Moins_vis=$Moins_vis_avant+$ScoreDom;
				$Diff_vis=$Plus_vis-$Moins_vis;
				
				mysql_query('UPDATE equipes 
								SET Equipe_MJ="'.$MJ_vis.'",
									Equipe_V="'.$Vict_vis.'", 
									Equipe_Vp="'.$Vict_prol_vis.'", 
									Equipe_D="'.$Def_vis.'",
									Equipe_Dp="'.$Def_prol_vis.'",
									Equipe_Pts="'.$Pts_vis.'",
									Equipe_Plus='.$Plus_vis.',
									Equipe_Moins='.$Moins_vis.',
									Equipe_Diff='.$Diff_vis.'
								WHERE Equipe_ID='.$id_vis.'') or die (mysql_error());									
			}
			
		}
	}
	
	
	echo 'Les r&eacute;sultats et le calendrier ont bien été mis &agrave; jour !';
?>
En effet au bout de la deuxième journée il m'affiche une équipe avec 4 Victoire et un autre avec 3 victoires!!
Ce n'est pas au niveau de l'affichage puisqu'en fait le chiffre 3 et 4 sont insérer dans la base de donnée par cette page!!

j'ai beau cherché, je ne vois pas où est mon erreur!!
Peut être qu'un oeil nouveau me la trouvera!! Merci

Mammouth du PHP | 881 Messages

16 juil. 2010, 00:14

Ce me semblerait plus simple de mettre les résultats dans un table de résultats, laquelle table inclurait un champ "équipe". Ensuite, tu pourrais confier à MySQL de compter les résultats pour toi. Compter pour toi dans le style de :
$requete = "SELECT (SELECT count(match) WHERE PointsPour > PointsContre AND equipe = EquipeCherchee) as Les Vic, count(Match) as TousMatch GROUP BY equipe HAVING Saison = 2010 AND equipe = EquipeCherchee"; 
Ce qui demanderait une table "resultats" qui inclue les champs
match integer
date date
equipe string
PointsPour integer
PointsContre integer
Soyez artisans de paix

Petit nouveau ! | 5 Messages

16 juil. 2010, 13:31

En fait j'ai réussit en faisant autrement: j'ai rajouter un champs defaite dans la tables des match ou est stocké le resultat puis apreès j'ai fait des requetes sql cherchant le nombre de victoire et de defate pour chaque equipe avec mysql_num_rows!!

Si ca interesse quelque='un je mets mon code fonctionnel:
<?php
	//On remet à zéro toutes les variables dans le classement
	
	mysql_query('UPDATE equipes 
					SET Equipe_MJ=0,
						Equipe_V=0, 
						Equipe_Vp=0, 
						Equipe_D=0,
						Equipe_Dp=0,
						Equipe_Pts=0,
						Equipe_Plus=0,
						Equipe_Moins=0,
						Equipe_Diff=0
					WHERE Equipe_ChampID=1') or die (mysql_error());									

	//On récupère les variables
	for ($i=1 ; $i<=26 ; $i++)
	{
		for ($j=1 ; $j<8; $j++)
		{
			$Equipe1 = "equipe1_journee".$i."_match".$j."";
			$Equipe2 = "equipe2_journee".$i."_match".$j."";
			$enreg1 = "score1_journee".$i."_match".$j."";
			$enreg2 = "score2_journee".$i."_match".$j."";
			$enreg3 = "prolongation_journee".$i."_match".$j."";

			
			$EquipeDom = mysql_real_escape_string ($_POST[''.$Equipe1.'']);
			$EquipeVis = mysql_real_escape_string ($_POST[''.$Equipe2.'']);
			
			$equipe_dom_sql = mysql_query ('SELECT Club_ID FROM club WHERE Club_Nom = "'.$EquipeDom.'"') or die (mysql_error());
			$equipe_dom = mysql_fetch_assoc($equipe_dom_sql);
			$id_dom = $equipe_dom['Club_ID'];
			
													
			$equipe_vis_sql = mysql_query ('SELECT Club_ID FROM club WHERE Club_Nom = "'.$EquipeVis.'"') or die (mysql_error());
			$equipe_vis = mysql_fetch_assoc($equipe_vis_sql);
			$id_vis = $equipe_vis['Club_ID'];
			
			$equipeDom_sql = mysql_query ('SELECT * FROM equipes WHERE Equipe_ID = '.$id_dom.'') or die (mysql_error());
			$equipeDom = mysql_fetch_assoc($equipeDom_sql);
			$MJ_dom_avant = $equipeDom['Equipe_MJ'];
			$Plus_dom_avant = $equipeDom['Equipe_Plus'];
			$Moins_dom_avant = $equipeDom['Equipe_Moins'];
			$Diff_dom_avant = $equipeDom['Equipe_Diff'];

			$equipeVis_sql = mysql_query ('SELECT * FROM equipes WHERE Equipe_ID = '.$id_vis.'') or die (mysql_error());
			$equipeVis = mysql_fetch_assoc($equipeVis_sql);
			$MJ_vis_avant = $equipeVis['Equipe_MJ'];
			$Plus_vis_avant = $equipeVis['Equipe_Plus'];
			$Moins_vis_avant = $equipeVis['Equipe_Moins'];
			$Diff_vis_avant = $equipeVis['Equipe_Diff'];
			
			$ScoreDom = intval ($_POST[''.$enreg1.'']);
			$ScoreVis = intval ($_POST[''.$enreg2.'']);
			
			
			//Si un score a été rempli pour les deux équipes on met à jour la base de données avec l'id du vainqueur, les scores et la prolongation (valeur 1 si il y a eu)
			if ((empty($ScoreDom))&&(empty($ScoreVis)))
			{
			}
			else
			{
				if (isset($_POST[''.$enreg3.'']))
				{
					$Prol = 1;
				}
				else
				{
					$Prol = 0;
				}
				
				if ($ScoreDom>$ScoreVis)
				{
					$EquipeVainq = $id_dom;
					$EquipeDef = $id_vis;
				}
				else if ($ScoreDom<$ScoreVis)
				{
					$EquipeVainq = $id_vis;
					$EquipeDef = $id_dom;
				}

				
				// On incrément de 1 les matchs joués par l'équi domicile et exterieur
				$MJ_dom=$MJ_dom_avant+1;
				$MJ_vis=$MJ_vis_avant+1;
				
				mysql_query('UPDATE magnus 
								SET Magnus_Score_EquipeDom="'.$ScoreDom.'",
									Magnus_Score_EquipeVis="'.$ScoreVis.'", 
									Magnus_Vainqueur="'.$EquipeVainq.'", 
									Magnus_Defaite="'.$EquipeDef.'", 
									Magnus_Prolongation="'.$Prol.'"
								WHERE Magnus_EquipeDom="'.$EquipeDom.'"
								AND Magnus_EquipeVis="'.$EquipeVis.'"') or die (mysql_error());
				
				//On calcul les buts marquées et encaissés puis on fait la différence
				$Plus_dom=$Plus_dom_avant+$ScoreDom;
				$Moins_dom=$Moins_dom_avant+$ScoreVis;
				$Diff_dom=$Plus_dom-$Moins_dom;
				
				mysql_query('UPDATE equipes 
								SET Equipe_MJ="'.$MJ_dom.'",
									Equipe_Plus='.$Plus_dom.',
									Equipe_Moins='.$Moins_dom.',
									Equipe_Diff='.$Diff_dom.'
								WHERE Equipe_ID='.$id_dom.'') or die (mysql_error());									
			
				//On calcul les buts marquées et encaissés puis on fait la différence
				$Plus_vis=$Plus_vis_avant+$ScoreVis;
				$Moins_vis=$Moins_vis_avant+$ScoreDom;
				$Diff_vis=$Plus_vis-$Moins_vis;
				
				mysql_query('UPDATE equipes 
								SET Equipe_MJ="'.$MJ_vis.'",
									Equipe_Plus='.$Plus_vis.',
									Equipe_Moins='.$Moins_vis.',
									Equipe_Diff='.$Diff_vis.'
								WHERE Equipe_ID='.$id_vis.'') or die (mysql_error());									
			}
			
		}
	}
	$Magnus_sql = mysql_query('SELECT Equipe_ID FROM equipes WHERE Equipe_ChampID = 1')or die (mysql_error());
	while ($Magnus = mysql_fetch_assoc ($Magnus_sql))
	{
		$id = $Magnus['Equipe_ID'];
		
		$Vict_sql = mysql_query('SELECT Magnus_Vainqueur FROM magnus WHERE Magnus_Prolongation = 0 AND Magnus_Vainqueur='.$id.'') or die (mysql_error());
		$Vict = mysql_num_rows ($Vict_sql);
		$Vict_prol_sql = mysql_query('SELECT Magnus_Vainqueur FROM magnus WHERE Magnus_Prolongation = 1 AND Magnus_Vainqueur='.$id.'') or die (mysql_error());
		$Vict_prol = mysql_num_rows ($Vict_prol_sql);
		$Def_sql = mysql_query('SELECT Magnus_Vainqueur FROM magnus WHERE Magnus_Prolongation = 0 AND Magnus_Defaite='.$id.'') or die (mysql_error());
		$Def = mysql_num_rows ($Def_sql);
		$Def_prol_sql = mysql_query('SELECT Magnus_Vainqueur FROM magnus WHERE Magnus_Prolongation = 1 AND Magnus_Defaite='.$id.'') or die (mysql_error());
		$Def_prol = mysql_num_rows ($Def_prol_sql);
		
		$Pts = $Vict*2+$Vict_prol*2+$Def_prol;
		
		mysql_query('UPDATE equipes 
							SET Equipe_V="'.$Vict.'",
								Equipe_Vp='.$Vict_prol.',
								Equipe_D='.$Def.',
								Equipe_Dp='.$Def_prol.',
								Equipe_Pts='.$Pts.'
							WHERE Equipe_ID='.$id.'') or die (mysql_error());
	}

	echo 'Les r&eacute;sultats et le classement ont bien été mis &agrave; jour !';
?>

Mammouth du PHP | 881 Messages

16 juil. 2010, 14:19

Excellent, félicitations.

N'oublie pas d'indiquer "résolu" (crochet dans le rond vert).
Soyez artisans de paix