pb condition

Eléphant du PHP | 250 Messages

23 oct. 2006, 22:37

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();
?>

Eléphant du PHP | 184 Messages

23 oct. 2006, 22:43

Salut,

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

ViPHP
ViPHP | 1961 Messages

23 oct. 2006, 22:46

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
Deux choses sont infinies, l'Univers et la sottise humaine!!
Mais je ne suis pas sur de ce que j'affirme au sujet de l'Univers.

A. Einstein

Eléphant du PHP | 250 Messages

23 oct. 2006, 22:46

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


Eléphant du PHP | 250 Messages

23 oct. 2006, 23:39

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();
?>

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

24 oct. 2006, 01:22

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.

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphant du PHP | 250 Messages

24 oct. 2006, 19:19

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

Eléphant du PHP | 193 Messages

24 oct. 2006, 19:38

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.

Eléphant du PHP | 250 Messages

25 oct. 2006, 21:52

j'ai viré le "select stock2" redondant...
et ai mis un echo'$sql'; comme indiqué mais c'est toujours pareil.

Eléphant du PHP | 250 Messages

25 oct. 2006, 21:57

<?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();
?>

Eléphant du PHP | 193 Messages

26 oct. 2006, 00:29

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

ViPHP
ViPHP | 1961 Messages

26 oct. 2006, 02:04

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 ???
Deux choses sont infinies, l'Univers et la sottise humaine!!
Mais je ne suis pas sur de ce que j'affirme au sujet de l'Univers.

A. Einstein

Eléphant du PHP | 250 Messages

26 oct. 2006, 21:48

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

ViPHP
ViPHP | 1961 Messages

26 oct. 2006, 21:59

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().
Deux choses sont infinies, l'Univers et la sottise humaine!!
Mais je ne suis pas sur de ce que j'affirme au sujet de l'Univers.

A. Einstein

Eléphant du PHP | 250 Messages

27 oct. 2006, 22:54

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