Page 1 sur 2

pb condition

Posté : 23 oct. 2006, 22:37
par YVES
Bonjour,

je n'ai pas de message d'erreur avec le code qui suit et la condition ne s'effectue pas pourtant.
celà doit venir du "if..." mais je ne trouve pas la clef du problème :shock:
<?php
  session_start();
 $id = $_SESSION['id'];
$db= mysql_connect(localhost, xxx, xxx) or die("Impossible de se connecter à la base de données"); 	   
 mysql_select_db('xxx',$db)  or die('Erreur de selection base'.mysql_error());
$sql = "SELECT gestion ".
       "FROM membres  ".
       "WHERE id = ". $id .";"; 
$res = mysql_query($sql) or die('Erreur SQL '.$sql.'<br>'.mysql_error());
($data = mysql_result($res,0,'gestion'));
if ($data == './images/jetonrouge.gif')
{
    echo '<center><font color="red">Désolé, mais VOTRE JETON EST ROUGE !</font></center>
<center><font color="black"><a href="page_membre.php">retour page membre</a></font></center>';
}
else
{
$sql="SELECT stock1 FROM membres WHERE id = ". $id .";"; 
$res=mysql_query($sql) or die('Erreur SQL '.$sql.'<br>'.mysql_error());
($data = mysql_result($res,0,stock1));
if (($data!= './objet/piece_meca.gif') OR ($data!= './objet/clef.gif'))
{
echo '<center><font color="red">Ce n\'est pas avec celà que vous aller réparer
votre véhicule!</font></center>
<center><font color="black"><a href="reparervehicule.php"></a></font></center>';
}
header("Location: page_membre.php");
}
mysql_close();
?>

Posté : 23 oct. 2006, 22:43
par graphistnet
Salut,

As tu affiché la valeur de $data pour voir déjà si c'est correct de ce côté?

Posté : 23 oct. 2006, 22:46
par Ajoloca
Bonsoir,
Je pense que

Code : Tout sélectionner

($data = mysql_result($res,0,stock1));
devrait être

Code : Tout sélectionner

($data = mysql_result($res,0, 'stock1'));
avec les cotes

Posté : 23 oct. 2006, 22:46
par YVES
Autant pour moi, j'ai viré la ligne ou j'appelle le header, pour revenir juste 1 cran auparavant, et cela fonctionne :oops:
echo '<center><font color="red">Ce n\'est pas avec celà que vous aller réparer
votre véhicule!</font></center>
<center><font color="black"><a href="reparervehicule.php">retour réparation véhucile</a></font></center>';
}
}
mysql_close();


Posté : 23 oct. 2006, 23:39
par YVES
bon, la suite ne fonctionne pas vraiment, j'ai encore 1 pb d econdition, le retour sur la page membre se fait bien mais sans update de la base ni des sessions (le nombre d'accolades ouvrantes et fermantes me semble pourtant correct...)
<?php
  session_start();
 $id = $_SESSION['id'];
$db= mysql_connect(localhost, xxx, xxx) or die("Impossible de se connecter à la base de données"); 	   
 mysql_select_db('xxx',$db)  or die('Erreur de selection base'.mysql_error());
$sql = "SELECT gestion ".
       "FROM membres  ".
       "WHERE id = ". $id .";"; 
$res = mysql_query($sql) or die('Erreur SQL '.$sql.'<br>'.mysql_error());
($data = mysql_result($res,0,'gestion'));
if ($data == './images/jetonrouge.gif')
{
    echo '<center><font color="red">Désolé, mais VOTRE JETON EST ROUGE !</font></center>
<center><font color="black"><a href="page_membre.php">retour page membre</a></font></center>';
}
else
{
$sql="SELECT stock2 FROM membres WHERE id = ". $id .";"; 
$res=mysql_query($sql) or die('Erreur SQL '.$sql.'<br>'.mysql_error());
($data = mysql_result($res,0,stock2));
if (($data!= './objet/piece_meca.gif') OR ($data!= './objet/clef.gif'))
{
echo '<center><font color="red">Ce n\'est pas avec celà que vous aller réparer
votre véhicule!</font></center>
<center><font color="black"><a href="reparervehicule.php">retour réparation véhicule</a></font></center>';
}
else
{
$sql="SELECT stock2 FROM membres WHERE id = ". $id .";"; 
$res=mysql_query($sql) or die('Erreur SQL '.$sql.'<br>'.mysql_error());
($data = mysql_result($res,0,stock2));
 if (($data == './objet/clef.gif'))
    {
$sql = "UPDATE membres SET uvehicule= uvehicule-0.2,
gestion = './images/jetonrouge.gif',
mp = ' Vous venez de réparer votre vehicule et son usure a diminué de 0.2 pts.',
uvehicule= uvehicule-0.2, ustock2= ustock2+0.1  WHERE id = ". $id .";"; 
mysql_query($sql) or die('Erreur SQL '.$sql.'<br>'.mysql_error());
if($res)
   {
$_SESSION['uvehicule']= $_SESSION['uvehicule']-0.2;
$_SESSION['gestion']='./images/jetonrouge.gif';
$_SESSION['ustock2']= $_SESSION['ustock2']+0.1;
$_SESSION['mp']=' Vous venez de réparer votre vehicule et son usure a diminué de 0.2 pts.';
   }
 }
 }
header("Location: page_membre.php");
}
mysql_close();
?>

Posté : 24 oct. 2006, 01:22
par Truc
Indente correctement ton code... il ne sera pas que plus lisible pour nous mais également pour toi.

ET lis également les remarques faites !!!
Bonsoir,
Je pense que
Code:
($data = mysql_result($res,0,stock1));

devrait être
Code:
($data = mysql_result($res,0, 'stock1'));
avec les cotes
Sinon ça va tourner en rond.

Posté : 24 oct. 2006, 19:19
par YVES
<?php
  session_start();
 $id = $_SESSION['id'];
$db= mysql_connect(localhost, xxx, xxx) or die("Impossible de se connecter à la base de données"); 	   
 mysql_select_db('xxx',$db)  or die('Erreur de selection base'.mysql_error());
$sql = "SELECT gestion ".
       "FROM membres  ".
       "WHERE id = ". $id .";"; 
$res = mysql_query($sql) or die('Erreur SQL '.$sql.'<br>'.mysql_error());
($data = mysql_result($res,0,'gestion'));
if ($data == './images/jetonrouge.gif')
{
    echo '<center><font color="red">Désolé, mais VOTRE JETON EST ROUGE !</font></center>
<center><font color="black"><a href="page_membre.php">retour page membre</a></font></center>';
}
else
{
$sql= "SELECT stock2 FROM membres WHERE id = ". $id .";"; 
$res=mysql_query($sql) or die('Erreur SQL '.$sql.'<br>'.mysql_error());
($data = mysql_result($res,0,'stock2'));
if (($data!= './objet/piece_meca.gif') OR ($data!= './objet/clef.gif'))
{
echo '<center><font color="red">Ce n\'est pas avec celà que vous aller réparer
votre véhicule!</font></center>
<center><font color="black"><a href="reparervehicule.php">retour réparation véhicule</a></font></center>';
}
else
{
$sql= "SELECT stock2 FROM membres WHERE id = ". $id .";"; 
$res=mysql_query($sql) or die('Erreur SQL '.$sql.'<br>'.mysql_error());
($data = mysql_result($res,0,'stock2'));
 if (($data == './objet/clef.gif'))
    {
$sql = "UPDATE membres SET uvehicule= uvehicule-0.2,
gestion = './images/jetonrouge.gif',
mp = ' Vous venez de réparer votre vehicule et son usure a diminué de 0.2 pts.',
uvehicule= uvehicule-0.2, ustock2= ustock2+0.1  WHERE id = ". $id .";"; 
mysql_query($sql) or die('Erreur SQL '.$sql.'<br>'.mysql_error());
if($res)
   {
$_SESSION['uvehicule']= $_SESSION['uvehicule']-0.2;
$_SESSION['gestion']='./images/jetonrouge.gif';
$_SESSION['ustock2']= $_SESSION['ustock2']+0.1;
$_SESSION['mp']=' Vous venez de réparer votre vehicule et son usure a diminué de 0.2 pts.';
   }
 }
 }
header("Location: page_membre.php");
}
mysql_close();
?>
Les quotes ont été ajoutées mais le résultat est identique...
retour sur page membre sans maj dans la db.

Posté : 24 oct. 2006, 19:38
par Vikchill
J'ai une petite question: pourquoi tu fais ceci?
$sql= "SELECT stock2 FROM membres WHERE id = ". $id .";"; 
$res=mysql_query($sql) or die('Erreur SQL '.$sql.'<br>'.mysql_error());
($data = mysql_result($res,0,'stock2'));
if (($data!= './objet/piece_meca.gif') OR ($data!= './objet/clef.gif'))
{
echo '<center><font color="red">Ce n\'est pas avec celà que vous aller réparer
votre véhicule!</font></center>
<center><font color="black"><a href="reparervehicule.php">retour réparation véhicule</a></font></center>';
}
else
{
$sql= "SELECT stock2 FROM membres WHERE id = ". $id .";"; 
$res=mysql_query($sql) or die('Erreur SQL '.$sql.'<br>'.mysql_error()); 
Tu as deux fois la même requête, tu peux enlever les deux dernières lignes de ce code je crois.

En dehors de ça, fait un echo de $sql après ces lignes:
$sql = "UPDATE membres SET uvehicule= uvehicule-0.2,
gestion = './images/jetonrouge.gif',
mp = ' Vous venez de réparer votre vehicule et son usure a diminué de 0.2 pts.',
uvehicule= uvehicule-0.2, ustock2= ustock2+0.1  WHERE id = ". $id .";";
Il faut absolument contrôler la requête que tu construis, la lancer dans PHPMyAdmin pour être sûr qu'elle soit correcte.

Posté : 25 oct. 2006, 21:52
par YVES
j'ai viré le "select stock2" redondant...
et ai mis un echo'$sql'; comme indiqué mais c'est toujours pareil.

Posté : 25 oct. 2006, 21:57
par YVES
<?php
  session_start();
 $id = $_SESSION['id'];
$db= mysql_connect(localhost, xx, xx) or die("Impossible de se connecter à la base de données"); 	   
 mysql_select_db('xxx',$db)  or die('Erreur de selection base'.mysql_error());
$sql = "SELECT gestion ".
       "FROM membres  ".
       "WHERE id = ". $id .";"; 
$res = mysql_query($sql) or die('Erreur SQL '.$sql.'<br>'.mysql_error());
($data = mysql_result($res,0,'gestion'));
if ($data == './images/jetonrouge.gif')
{
    echo '<center><font color="red">Désolé, mais VOTRE JETON EST ROUGE !</font></center>
<center><font color="black"><a href="page_membre.php">retour page membre</a></font></center>';
}
else
{
$sql= "SELECT stock2 FROM membres WHERE id = ". $id .";"; 
$res=mysql_query($sql) or die('Erreur SQL '.$sql.'<br>'.mysql_error());
($data = mysql_result($res,0,'stock2'));
if (($data!= './objet/piece_meca.gif') OR ($data!= './objet/clef.gif'))
{
echo '<center><font color="red">Ce n\'est pas avec celà que vous aller réparer
votre véhicule!</font></center>
<center><font color="black"><a href="reparervehicule.php">retour réparation véhicule</a></font></center>';
}
else
{
 if (($data == './objet/clef.gif'))
    {
$sql = "UPDATE membres SET uvehicule= uvehicule-0.2,
gestion = './images/jetonrouge.gif',
mp = ' Vous venez de réparer votre vehicule et son usure a diminué de 0.2 pts.',
uvehicule= uvehicule-0.2, ustock2= ustock2+0.1  WHERE id = ". $id .";"; 
mysql_query($sql) or die('Erreur SQL '.$sql.'<br>'.mysql_error());
if($res)
   {
$_SESSION['uvehicule']= $_SESSION['uvehicule']-0.2;
$_SESSION['gestion']='./images/jetonrouge.gif';
$_SESSION['ustock2']= $_SESSION['ustock2']+0.1;
$_SESSION['mp']=' Vous venez de réparer votre vehicule et son usure a diminué de 0.2 pts.';
   }
 }
 }
header("Location: page_membre.php");
}
mysql_close();
?>

Posté : 26 oct. 2006, 00:29
par Vikchill
j'ai viré le "select stock2" redondant...
et ai mis un echo'$sql'; comme indiqué mais c'est toujours pareil.
Ca d'accord, mais l'important c'est de le contrôler, et si tu ne trouves rien dis-nous ce qu'il contient ;)

Posté : 26 oct. 2006, 02:04
par Ajoloca
Bonsoir,
Indente correctement ton code... il ne sera pas que plus lisible pour nous mais également pour toi.
(le nombre d'accolades ouvrantes et fermantes me semble pourtant correct...)
En effet le nombre d'accolades est correct, mais sont-elles placées comme tu le voudrais ?

Je pense que là tu veras plus clair
<?php
	session_start();
	$id = $_SESSION['id'];
	$db= mysql_connect(localhost, xx, xx) or die("Impossible de se connecter à la base de données");        
	mysql_select_db('xxx',$db)  or die('Erreur de selection base'.mysql_error());
	$sql = "SELECT gestion FROM membres  WHERE id = ". $id; 
	$res = mysql_query($sql) or die('Erreur SQL '.$sql.'<br>'.mysql_error());
	$data = mysql_result($res,0,'gestion');
	if ($data == './images/jetonrouge.gif'){
		echo '<center><font color="red">Désolé, mais VOTRE JETON EST ROUGE !</font></center>
				<center><font color="black"><a href="page_membre.php">retour page membre</a></font></center>';
	}
	else{
		$sql= "SELECT stock2 FROM membres WHERE id = " . $id; 
		$res=mysql_query($sql) or die('Erreur SQL '.$sql.'<br>'.mysql_error());
		$data = mysql_result($res,0,'stock2');
		if (($data!= './objet/piece_meca.gif') OR ($data!= './objet/clef.gif')){
			echo '<center><font color="red">Ce n\'est pas avec celà que vous aller réparer votre véhicule!</font></center>
					<center><font color="black"><a href="reparervehicule.php">retour réparation véhicule</a></font></center>';
		}
		else{
 			if (($data == './objet/clef.gif')){
				$sql = "UPDATE membres SET uvehicule= uvehicule-0.2, gestion = './images/jetonrouge.gif',
						mp = ' Vous venez de réparer votre vehicule et son usure a diminué de 0.2 pts.',
						uvehicule= uvehicule-0.2, ustock2= ustock2+0.1  WHERE id = ". $id; 
				mysql_query($sql) or die('Erreur SQL '.$sql.'<br>'.mysql_error());
				if($res){
					$_SESSION['uvehicule']= $_SESSION['uvehicule']-0.2;
					$_SESSION['gestion']='./images/jetonrouge.gif';
					$_SESSION['ustock2']= $_SESSION['ustock2']+0.1;
					$_SESSION['mp']=' Vous venez de réparer votre vehicule et son usure a diminué de 0.2 pts.';
   			}
 			}
 		}
		header("Location: page_membre.php");
	}
	mysql_close();
?>
Tes conditions sont elles placées correctement ???

Posté : 26 oct. 2006, 21:48
par YVES
OUI, mes conditions sont placées correctement.
Et meme avec ton code, c'est toujours pareil, pas de mise à jour dans la base ni au niveau des sessions, pas de message d'erreurs, c'est un retour direct sur la page membre :cry:
J'arrive à coder pas mal de requètes tant qu'il n'y a qu'une variable à traiter, cela fonctionne toujours, mais dès qu'il y en a plusieurs (et donc des boucles et des if) ca ne va plus :?

Posté : 26 oct. 2006, 21:59
par Ajoloca
Dans cette partie de code la valeur de $res, elle viens d'où
 if($res){
                    $_SESSION['uvehicule']= $_SESSION['uvehicule']-0.2;
                    $_SESSION['gestion']='./images/jetonrouge.gif';
                    $_SESSION['ustock2']= $_SESSION['ustock2']+0.1;
                    $_SESSION['mp']=' Vous venez de réparer votre vehicule et son usure a diminué de 0.2 pts.'; 
Regarde bien la ligne qui est juste devant le if($res) et les autres appels à mysql_query().

Posté : 27 oct. 2006, 22:54
par YVES
$res vient de plus haut dans le script....
(j'ai d'autres requetes plus simples construites à l'identique et qui fonctionnent) :?
bref, je ne pige toujours pas, désolé :oops: