Page 1 sur 1

Probleme d'insertion et/ou definition variables ??!

Posté : 14 juin 2006, 11:26
par Psyko
Bonjour à tous !

Voila, j'ai deux fichiers php : l'un sert à saisir les résultats d'une journée de foot (c'est un formulaire) et l'autre récupere les données de ce formulaire, éxécute certains calcule et les insère dans la base.

Simplement, lorsque j'éxécute ce script (après avoir insérer les scores et les équipes dans le formulaire), aucune données s'insèrent dans ma BD :s
Ca fait assez longtemps que je suis dessus et je ne trouve pas d'ou cela peut venir :s

Le premier fichier :
 <?
$connexion=mysql_connect("localhost", "root", "");
$db=mysql_select_db("bd_usc");


	$sql = 'SELECT equipe_sa FROM classement_sa ORDER BY equipe_sa ASC';
	$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
	$i=0;
	while ($data = mysql_fetch_array($req))
	{
		$equipe_sa[$i]=$data['equipe_sa'];
		$i++;
	}
	
	$nombre_matchs=$i/2;
	
	echo '<form name="form1" method="post" action="maj_class.php">
	<div align="left">Journée n°<select name="jour">';
	for ($u=1;$u<41;$u++)
		{
		echo '<option value="'.$u.'e journée">'.$u.'</option>';
		}
	echo '</select></div><br />
	<table width="400" border="0" cellspacing="0" cellpadding="0">';
	
	for ($j=0,$x=0,$y=1;$j<$nombre_matchs;$j++,$x=$x+2,$y=$y+2)
	{
	echo '
	  <tr>
		<td width="140"><div align="right">
		  <select name="equipe_sa'.$x.'">';
		   for ($k=0;$k<$i;$k++)
			{
			echo '<option value="'.$equipe_sa[$k].'">'.$equipe_sa[$k].'</option>';
			}
	echo ' </select>
		</div>
		</td>
		<td width="50"><div align="right">
		  <input name="score'.$x.'" value="0" type="text" size="5">
		</div>
		</td>
		<td width="20"><div align="center">-</div>
		</td>
		<td width="50"><div align="left">
		  <input name="score'.$y.'" value="0" type="text" size="5">
		</div>
		</td>
		<td width="140"><div align="left"></div>
			<select name="equipe_sa'.$y.'">';
		   for ($k=0;$k<$i;$k++)
			{
			echo '<option value="'.$equipe_sa[$k].'">'.$equipe_sa[$k].'</option>';
			}
	echo '</select>
		</div>
		</td>
	  </tr>';
	}
	echo '</table>
	<p><input type="submit" name="Submit" value="Ajouter les matchs !"></p>
	</form>';

mysql_close();
?>
Le deuxième fichier :
<?
$connexion=mysql_connect("localhost", "root", "");
$db=mysql_select_db("bd_usc");

	
	$sql = 'SELECT equipe_sa FROM classement_sa';
	$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
	$i=0;
					
	while ($data = mysql_fetch_array($req))
		{
		$equipe_sa[$i]=$data['equipe_sa'];
		$i++;
		}
	
	$nombre_matchs=$i/2;
	
	

			
	if (isset($_POST['equipe_sa']))

		{     
		  $serie='classement_sa';
		  for ($j=0,$x=0,$y=1;$j<$nombre_matchs;$j++,$x=$x+2,$y=$y+2)
			{ 
			  if ($_POST['equipe_sa'.$x]!=$_POST['equipe_sa'.$y])
				{
				
				$sql = 'INSERT INTO matchs_sa (journee_sa, equipe_dom_sa, equipe_ext_sa, score_dom_sa, score_ext_sa) VALUES ("'.$_POST['jour'].'", "'.$_POST['equipe_sa'.$x].'", "'.$_POST['equipe_sa'.$y].'", "'.$_POST['score'.$x].'", "'.$_POST['score'.$y].'")';
				$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());			
			
			$sql = 'SELECT * FROM '.$serie.' WHERE equipe_sa="'.$_POST['equipe_sa'.$x].'"';
			$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
			while ($data = mysql_fetch_array($req))
					{
					$bp_sa=$data['bp_sa']+$_POST['score'.$x];
					$bc_sa=$data['bc_sa']+$_POST['score'.$y];
					$sql = 'UPDATE '.$serie.' SET bp_sa="'.$bp_sa.'", bc_sa="'.$bc_sa.'" WHERE equipe_sa="'.$_POST['equipe_sa'.$x].'"';
					$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
					}
			$sql = 'SELECT * FROM '.$serie.' WHERE equipe_sa="'.$_POST['equipe_sa'.$y].'"';
			$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
			while ($data = mysql_fetch_array($req))
					{
					$bp_sa=$data['bp_sa']+$_POST['score'.$y];
					$bc_sa=$data['bc_sa']+$_POST['score'.$x];
					$sql = 'UPDATE '.$serie.' SET bp_sa="'.$bp_sa.'", bc_sa="'.$bc_sa.'" WHERE equipe_sa="'.$_POST['equipe_sa'.$y].'"';
					$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
					}
			if ($_POST['score'.$x]>$_POST['score'.$y])
				{
				$sql = 'SELECT * FROM '.$serie.' WHERE equipe_sa="'.$_POST['equipe_sa'.$x].'"';
				$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
				while ($data = mysql_fetch_array($req))
					{
					$v_sa=$data['v_sa']+1;
					$pts_sa=$data['pts_sa']+4;
					$sql = 'UPDATE '.$serie.' SET pts_sa="'.$pts_sa.'", v_sa="'.$v_sa.'" WHERE equipe_sa="'.$_POST['equipe_sa'.$x].'"';
					$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
					}
				$sql = 'SELECT * FROM '.$serie.' WHERE equipe_sa="'.$_POST['equipe_sa'.$y].'"';
				$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
				while ($data = mysql_fetch_array($req))
					{
					$d_sa=$data['d_sa']+1;
					$pts_sa=$data['pts_sa']+1;
					$sql = 'UPDATE '.$serie.' SET pts_sa="'.$pts_sa.'",d_sa="'.$d_sa.'" WHERE equipe_sa="'.$_POST['equipe_sa'.$y].'"';
					$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
					}
				}
			elseif ($_POST['score'.$x]==$_POST['score'.$y])
				{
				$sql = 'SELECT * FROM '.$serie.' WHERE equipe_sa="'.$_POST['equipe_sa'.$x].'"';
				$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
				while ($data = mysql_fetch_array($req))
					{
					$n_sa=$data['n_sa']+1;
					$pts_sa=$data['pts_sa']+2;
					$sql = 'UPDATE '.$serie.' SET pts_sa="'.$pts_sa.'", n_sa="'.$n_sa.'" WHERE equipe_sa="'.$_POST['equipe_sa'.$x].'"';
					$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
					}
				$sql = 'SELECT * FROM '.$serie.' WHERE equipe_sa="'.$_POST['equipe_sa'.$y].'"';
				$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
				while ($data = mysql_fetch_array($req))
					{
					$n_sa=$data['n_sa']+1;
					$pts_sa=$data['pts_sa']+2;
					$sql = 'UPDATE '.$serie.' SET pts_sa="'.$pts_sa.'", n_sa="'.$n_sa.'" WHERE equipe_sa="'.$_POST['equipe_sa'.$y].'"';
					$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
					}			
				}
			elseif ($_POST['score'.$x]<$_POST['score'.$y])
				{
				$sql = 'SELECT * FROM '.$serie.' WHERE equipe_sa="'.$_POST['equipe_sa'.$x].'"';

				$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
				while ($data = mysql_fetch_array($req))
					{
					$d_sa=$data['d_sa']+1;
					$pts_sa=$data['pts_sa']+1;
					$sql = 'UPDATE '.$serie.' SET pts_sa="'.$pts_sa.'",d_sa="'.$d_sa.'" WHERE equipe_sa="'.$_POST['equipe_sa'.$x].'"';
					$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
					}
				$sql = 'SELECT * FROM '.$serie.' WHERE equipe_sa="'.$_POST['equipe_sa'.$y].'"';
				$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
				while ($data = mysql_fetch_array($req))
					{
					$v_sa=$data['v_sa']+1;
					$pts_sa=$data['pts_sa']+4;
					$sql = 'UPDATE '.$serie.' SET pts_sa="'.$pts_sa.'", v_sa="'.$v_sa.'" WHERE equipe_sa="'.$_POST['equipe_sa'.$y].'"';
					$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
					}
					}
				}
				
			$sql = 'SELECT * FROM '.$serie.' WHERE equipe_sa="'.$_POST['equipe_sa'.$x].'"';
			$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
			while ($data = mysql_fetch_array($req))
					{
					$difference=($data['bp_sa'])-($data['bc_sa']);
					$sql = 'UPDATE '.$serie.' SET diff_sa='.$difference.' WHERE equipe_sa="'.$_POST['equipe_sa'.$x].'"';
					$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
					}
			$sql = 'SELECT * FROM '.$serie.' WHERE equipe_sa="'.$_POST['equipe_sa'.$y].'"';
			$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
			while ($data = mysql_fetch_array($req))
					{
					$difference=($data['bp_sa'])-($data['bc_sa']);
					$sql = 'UPDATE '.$serie.' SET diff_sa='.$difference.' WHERE equipe_sa="'.$_POST['equipe_sa'.$y].'"';
					$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
					}
			}
		}
		
	echo 'Matchs correctement mis à jour !<br>';
	echo '<a href="../classement_sa.php"> Voir le Classement </a>';

mysql_close();
?>
Merci d'avance pour votre précieuse aide, j'en ai fortement besoin...

Posté : 14 juin 2006, 11:35
par Ryle
Quand tu as un soucis de ce genre place des echo un peu partout dans ton code pour afficher les valeurs et savoir dans quels endroits il passe.

Tu verrais par exemple qu'il n'entre probabelemnt jamais dans le if (isset($_POST['equipe_sa'])) { ... }

et en faisant un
print_r($_POST); 
tu verrais que l'index 'equipe_sa' n'est pas défini, sans doute parce que dans ton formulaire ton champ s'appelle 'equipe_saXX' ou XX correspond à un nombre dans ta boucle for :)

Posté : 14 juin 2006, 12:03
par Psyko
tu verrais que l'index 'equipe_sa' n'est pas défini, sans doute parce que dans ton formulaire ton champ s'appelle 'equipe_saXX' ou XX correspond à un nombre dans ta boucle for :)
Oui je pense que c'est là d'ou vient le problème moi aussi... :?

Aurais tu une solution à me proposer pour ce problème de définition stp ?

Posté : 14 juin 2006, 12:31
par Ryle
Virer le if ? :)

Pour garder un truc propre et tester tes index, tu peux placer des isSet() dans ton for() avant d'utiliser les valeur :
for ($j=0,$x=0,$y=1;$j<$nombre_matchs;$j++,$x=$x+2,$y=$y+2) { 
  if (isSet($_POST['equipe_sa'.$x]) 
    && isSet($_POST['equipe_sa'.$y]) 
    && $_POST['equipe_sa'.$x]!=$_POST['equipe_sa'.$y]) 
  ...

Posté : 14 juin 2006, 16:03
par Psyko
J'ai viré le "if".
Simplement, maintenant, à chaque mysql_fetch_array() , j'ai une erreur :?

Ce message d'erreur est :
supplied argument is not a valid MySQL result resource in c:\program files\easyphp1-8\www\site_usc\admin\maj_class.php on line 64

Pourquoi mon argument que je passe dans le fetch array n'est pas valable ? :?

De plus, j'ai testé un echo de $_POST['equipe_sa'.$x] un peu partout, ca fonctionne, donc il me récupère bien les valeurs.


On y est presque... :wink:

Posté : 14 juin 2006, 16:08
par Devether
fais un echo de ta requete SQL et regarde s'il n'y a pas des champs vide

Posté : 14 juin 2006, 16:39
par Psyko
Alors, le programme tourne, c'est niquel, c'est le + important !
Tout s'insère et tout est calculé.

Simplement, j'ai toujours pas compris pourquoi j'ai un message d'erreur à chaque fetch array... :s


Devether >> Je l'ai fait sur une des requêtes, cela m'affiche un truc du genre : resource id#4

Posté : 14 juin 2006, 16:43
par ouckileou
Ce message d'erreur est :
supplied argument is not a valid MySQL result resource in c:\program files\easyphp1-8\www\site_usc\admin\maj_class.php on line 64

Pourquoi mon argument que je passe dans le fetch array n'est pas valable ? :?
==> http://www.phpfrance.com/forums/voir_sujet-19378.php

Je l'ai écris, je m'en sers ! :P

A un moment, une requête n'a pas dû être exécutée, comme tu en as plusieurs... un problème d'indice par exemple comme tu as des boucles, qui pourrait fausser le SQL

Posté : 14 juin 2006, 17:47
par Devether
Devether >> Je l'ai fait sur une des requêtes, cela m'affiche un truc du genre : resource id#4
ce que je te propose c'est de faire ceci (je prend un ligne au hasard)
$sql = 'SELECT * FROM '.$serie.' WHERE equipe_sa="'.$_POST['equipe_sa'.$y].'"'; 
echo "Ma requete : ".$sql;

Posté : 19 juin 2006, 16:41
par Psyko
Re les amis.

Après une tite absence je suis de retour :wink:

Donc j'au testé un peu tout ce que vous m'aviez conseillé de faire mais, mes erreurs sont toujours là.
Mes requêtes SQL sont bonnes, aucun soucis là dessus.

Mais à chaque fetch_array dans ma prog, il me dit que l'argument n'est pas valide :s (enfin ce sont des warning mais c'est chiant car tout marche correctement...)
Par exemple :
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in c:\program files\easyphp1-8\www\site_usc\admin\maj_class_sa.php on line 121

Ca correspond dans ma prog à cette ligne:
while ($data = mysql_fetch_array($req))

Merci d'avance pour votre dernier petit coup de pouce :p

Posté : 19 juin 2006, 18:02
par Devether
En gros ton erreur c'est que "la variable passée en argument n'est pas une ressource de resultat MySQL valide"

donc deux choses :

soit c'est ta requete (SELECT....) qui n'est pas valide, et là je te propose de faire un echo de celle ci que tu testes dans phpmyadmin.

soit c'est ta requete (SELECT....) qui n'est pas valide et là je n'ai pas de solution... ;)