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

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Probleme d'insertion et/ou definition variables ??!

par Devether » 19 juin 2006, 18:02

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... ;)

par Psyko » 19 juin 2006, 16:41

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

par Devether » 14 juin 2006, 17:47

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;

par ouckileou » 14 juin 2006, 16:43

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

par Psyko » 14 juin 2006, 16:39

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

par Devether » 14 juin 2006, 16:08

fais un echo de ta requete SQL et regarde s'il n'y a pas des champs vide

par Psyko » 14 juin 2006, 16:03

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:

par Ryle » 14 juin 2006, 12:31

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]) 
  ...

par Psyko » 14 juin 2006, 12:03

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 ?

par Ryle » 14 juin 2006, 11:35

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 :)

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

par Psyko » 14 juin 2006, 11:26

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...