JeuWeb - Crée ton jeu par navigateur
pb condition avec operateur de comparaison ! - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : pb condition avec operateur de comparaison ! (/showthread.php?tid=960)



pb condition avec operateur de comparaison ! - YVES - 20-03-2007

Bonsoir, je reviens avec 1 petit soucis.
En fait, le script fonctionne assez bien mais la condition if ($data>'10')
ne marche pas. le script tourne et revient à la page précédente sans afficher le résultat deladite condition...
J'ai volontairement écourté le programme:

Code PHP :
<?php
session_start
();
$id = $_SESSION['id'];
include (
"connexion.php");
$requete = mysql_query("SELECT transfert FROM membres WHERE id = ". $id .";") or die(mysql_error());
$res= mysql_fetch_assoc($requete);
$transfert = $res['transfert'];
$sql = mysql_query("SELECT objet FROM membres WHERE id = ". $id .";") or die(mysql_error());
$row = mysql_fetch_object($sql);
$donnee = $row->objet;
switch (
$donnee){
case
"./objet/rien.gif":
$sql = mysql_query("SELECT qstock1 FROM membres WHERE id = ". $id .";") or die(mysql_error());
$row = mysql_fetch_object($sql);
$data = $row->qstock1;
if (
$data>'10')
{
echo
'<center><font color="red">Le stock de destination est (ou va etre) déjà au maximum.
<br>Il vous faut 1 autre objet pour pouvoir stocker plus. </font></center>
<center><font color="black"><a href="affichestock1.php">retour page précédente</a></font></center>'
;
}
else
{
$sql = "UPDATE membres SET stock2= '$transfert', ustock2=ustock2+0.1,
exp=exp+0.1, hab=hab+0.1, stock1= './objet/rien.gif', qstock2=qstock1, qstock1='0' WHERE id = "
. $id .";";
mysql_query($sql) or die('Erreur SQL '.$sql.'<br>'.mysql_error());
$_SESSION['stock2']= $transfert;
$_SESSION['ustock2']=$_SESSION['ustock2']+0.1;
$_SESSION['exp']=$_SESSION['exp']+0.1;
$_SESSION['hab']=$_SESSION['hab']+0.1;
$_SESSION['stock1']= './objet/rien.gif';
$_SESSION['qstock2']= $_SESSION['qstock1'];
$_SESSION['qstock1']= '0';
}
header("Location: page_membre.php");
exit();
break;
}
mysql_close();
?>



RE: pb condition avec operateur de comparaison ! - carlou - 20-03-2007

tu es sur que c'est cette condition? je vois pas pkoi ca retournerait en arriere tt seul.

faudrait voir le reste du code


RE: pb condition avec operateur de comparaison ! - YVES - 20-03-2007

En fait et pour en finir avec l'exemple ci-dessus: jusque 10 le script est ok, au delà de 10 , le message d'erreur ne s'affiche pas.


RE: pb condition avec operateur de comparaison ! - Shidame - 20-03-2007

essai de mettre ca plutot
Code PHP :
<?php 
if ($data > 10)
car avec les quotes 10 est considéré comme une chaine caractère et non comme un entier


RE: pb condition avec operateur de comparaison ! - YVES - 20-03-2007

C'est comme si le > ne marchait pas..... En dessous et jusqu'au nombre choisi selon les differents cas de figure, le script fonctionne ainsi que les updates. AU DESSUS, c'est un retour sur "affichestock1.php" sans affichage du message d'eereur prévu dans le code (le stock de destination bla bla bla....) :heuuu:

Code PHP :
<?php
session_start
();
$id = $_SESSION['id'];
include (
"connexion.php");
$requete = mysql_query("SELECT transfert FROM membres WHERE id = ". $id .";") or die(mysql_error());
$res= mysql_fetch_assoc($requete);
$transfert = $res['transfert'];
$sql = mysql_query("SELECT objet FROM membres WHERE id = ". $id .";") or die(mysql_error());
$row = mysql_fetch_object($sql);
$donnee = $row->objet;
switch (
$donnee){
case
"./objet/rien.gif":
$sql = mysql_query("SELECT qstock1 FROM membres WHERE id = ". $id .";") or die(mysql_error());
$row = mysql_fetch_object($sql);
$data = $row->qstock1;
if (
$data>'10')
{
echo
'<center><font color="red">Le stock de destination est (ou va etre) déjà au maximum.
<br>Il vous faut 1 autre objet pour pouvoir stocker plus. </font></center>
<center><font color="black"><a href="affichestock1.php">retour page précédente</a></font></center>'
;
}
else
{
$sql = "UPDATE membres SET stock2= '$transfert', ustock2=ustock2+0.1,
exp=exp+0.1, hab=hab+0.1, stock1= './objet/rien.gif', qstock2=qstock1, qstock1='0' WHERE id = "
. $id .";";
mysql_query($sql) or die('Erreur SQL '.$sql.'<br>'.mysql_error());
$_SESSION['stock2']= $transfert;
$_SESSION['ustock2']=$_SESSION['ustock2']+0.1;
$_SESSION['exp']=$_SESSION['exp']+0.1;
$_SESSION['hab']=$_SESSION['hab']+0.1;
$_SESSION['stock1']= './objet/rien.gif';
$_SESSION['qstock2']= $_SESSION['qstock1'];
$_SESSION['qstock1']= '0';
}
header("Location: page_membre.php");
exit();
break;
case
"./objet/gourde.gif":
$sql = mysql_query("SELECT qstock1 FROM membres WHERE id = ". $id .";") or die(mysql_error());
$row = mysql_fetch_object($sql);
$data = $row->qstock1;
if (
$data >'15')
{
echo
'<center><font color="red">Le stock de destination est (ou va etre) déjà au maximum.
<br>Il vous faut 1 autre objet pour pouvoir stocker plus. </font></center>
<center><font color="black"><a href="affichestock1.php">retour page précédente</a></font></center>'
;
}
else
{
$sql = "UPDATE membres SET stock2= '$transfert', ustock2=ustock2+0.1, uobjet=uobjet+0.1,
exp=exp+0.1, hab=hab+0.1, stock1= './objet/rien.gif', qstock2=qstock1, qstock1='0' WHERE id = "
. $id .";";
mysql_query($sql) or die('Erreur SQL '.$sql.'<br>'.mysql_error());
$_SESSION['stock2']= $transfert;
$_SESSION['ustock2']=$_SESSION['ustock2']+0.1;
$_SESSION['exp']=$_SESSION['exp']+0.1;
$_SESSION['hab']=$_SESSION['hab']+0.1;
$_SESSION['stock1']= './objet/rien.gif';
$_SESSION['qstock2']= $_SESSION['qstock1'];
$_SESSION['qstock1']= '0';
$_SESSION['uobjet']=$_SESSION['uobjet']+0.1;
}
header("Location: page_membre.php");
exit();
break;
case
"./objet/outre.gif":
$sql = mysql_query("SELECT qstock1 FROM membres WHERE id = ". $id .";") or die(mysql_error());
$row = mysql_fetch_object($sql);
$data = $row->qstock1;
if (
$data >'20') {
echo
'<center><font color="red">Le stock de destination est déjà au maximum.
<br>Il vous faut 1 autre objet pour pouvoir stocker plus. </font></center>
<center><font color="black"><a href="affichestock1.php">retour page précédente</a></font></center>'
;
}
else {
$sql = "UPDATE membres SET stock2= '$transfert', ustock2=ustock2+0.1, uobjet=uobjet+0.1,
exp=exp+0.1, hab=hab+0.1, stock1= './objet/rien.gif', qstock2=qstock1, qstock1='0' WHERE id = "
. $id .";";
mysql_query($sql) or die('Erreur SQL '.$sql.'<br>'.mysql_error());
$_SESSION['stock2']= $transfert;
$_SESSION['ustock2']=$_SESSION['ustock2']+0.1;
$_SESSION['exp']=$_SESSION['exp']+0.1;
$_SESSION['hab']=$_SESSION['hab']+0.1;
$_SESSION['stock1']= './objet/rien.gif';
$_SESSION['qstock2']= $_SESSION['qstock1'];
$_SESSION['qstock1']= '0';
$_SESSION['uobjet']=$_SESSION['uobjet']+0.1;
}
header("Location: page_membre.php");
exit();
break;
case
"./objet/sacoche.gif":
$sql = mysql_query("SELECT qstock1 FROM membres WHERE id = ". $id .";") or die(mysql_error());
$row = mysql_fetch_object($sql);
$data = $row->qstock2;
if (
$data>'15')
{
echo
'<center><font color="red">Le stock de destination est déjà au maximum.
<br>Il vous faut 1 autre objet pour pouvoir stocker plus. </font></center>
<center><font color="black"><a href="affichestock1.php">retour page précédente</a></font></center>'
;
}
else
{
$sql = "UPDATE membres SET stock2= '$transfert', ustock2=ustock2+0.1, uobjet=uobjet+0.1,
exp=exp+0.1, hab=hab+0.1, stock1= './objet/rien.gif', qstock2=qstock1, qstock1='0' WHERE id = "
. $id .";";
mysql_query($sql) or die('Erreur SQL '.$sql.'<br>'.mysql_error());
$_SESSION['stock2']= $transfert;
$_SESSION['ustock2']=$_SESSION['ustock2']+0.1;
$_SESSION['exp']=$_SESSION['exp']+0.1;
$_SESSION['hab']=$_SESSION['hab']+0.1;
$_SESSION['stock1']= './objet/rien.gif';
$_SESSION['qstock2']= $_SESSION['qstock1'];
$_SESSION['qstock1']= '0';
$_SESSION['uobjet']=$_SESSION['uobjet']+0.1;
}
header("Location: page_membre.php");
exit();
break;
case
"./objet/sac.gif":
$sql = mysql_query("SELECT qstock1 FROM membres WHERE id = ". $id .";") or die(mysql_error());
$row = mysql_fetch_object($sql);
$data = $row->qstock2;
if (
$data>'20')
{
echo
'<center><font color="red">Le stock de destination est déjà au maximum.
<br>Il vous faut 1 autre objet pour pouvoir stocker plus. </font></center>
<center><font color="black"><a href="affichestock1.php">retour page précédente</a></font></center>'
;
}
else
{
$sql = "UPDATE membres SET stock2= '$transfert', ustock2=ustock2+0.1, uobjet=uobjet+0.1,
exp=exp+0.1, hab=hab+0.1, stock1= './objet/rien.gif', qstock2=qstock1, qstock1='0' WHERE id = "
. $id .";";
mysql_query($sql) or die('Erreur SQL '.$sql.'<br>'.mysql_error());
$_SESSION['stock2']= $transfert;
$_SESSION['ustock2']=$_SESSION['ustock2']+0.1;
$_SESSION['exp']=$_SESSION['exp']+0.1;
$_SESSION['hab']=$_SESSION['hab']+0.1;
$_SESSION['stock1']= './objet/rien.gif';
$_SESSION['qstock2']= $_SESSION['qstock1'];
$_SESSION['qstock1']= '0';
$_SESSION['uobjet']=$_SESSION['uobjet']+0.1;
}
header("Location: page_membre.php");
exit();
break;
case
"./objet/caisse.gif":
$sql = mysql_query("SELECT qstock1 FROM membres WHERE id = ". $id .";") or die(mysql_error());
$row = mysql_fetch_object($sql);
$data = $row->qstock2;
if (
$data>'30')
{
echo
'<center><font color="red">Le stock de destination est déjà au maximum.
<br>Il vous faut 1 autre objet pour pouvoir stocker plus. </font></center>
<center><font color="black"><a href="affichestock1.php">retour page précédente</a></font></center>'
;
}
else
{
$sql = "UPDATE membres SET stock2= '$transfert', ustock2=ustock2+0.1, uobjet=uobjet+0.1,
exp=exp+0.1, hab=hab+0.1, stock1= './objet/rien.gif', qstock2=qstock1, qstock1='0' WHERE id = "
. $id .";";
mysql_query($sql) or die('Erreur SQL '.$sql.'<br>'.mysql_error());
$_SESSION['stock2']= $transfert;
$_SESSION['ustock2']=$_SESSION['ustock2']+0.1;
$_SESSION['exp']=$_SESSION['exp']+0.1;
$_SESSION['hab']=$_SESSION['hab']+0.1;
$_SESSION['stock1']= './objet/rien.gif';
$_SESSION['qstock2']= $_SESSION['qstock1'];
$_SESSION['qstock1']= '0';
$_SESSION['uobjet']=$_SESSION['uobjet']+0.1;
}
header("Location: page_membre.php");
exit();
break;
case
"./objet/tonneau.gif":
$sql = mysql_query("SELECT qstock1 FROM membres WHERE id = ". $id .";") or die(mysql_error());
$row = mysql_fetch_object($sql);
$data = $row->qstock2;
if (
$data>'50')
{
echo
'<center><font color="red">Le stock de destination est déjà au maximum.
<br>Il vous faut 1 autre objet pour pouvoir stocker plus. </font></center>
<center><font color="black"><a href="affichestock1.php">retour page précédente</a></font></center>'
;
}
else
{
$sql = "UPDATE membres SET stock2= '$transfert', ustock2=ustock2+0.1, uobjet=uobjet+0.1,
exp=exp+0.1, hab=hab+0.1, stock1= './objet/rien.gif', qstock2=qstock1, qstock1='0' WHERE id = "
. $id .";";
mysql_query($sql) or die('Erreur SQL '.$sql.'<br>'.mysql_error());
$_SESSION['stock2']= $transfert;
$_SESSION['ustock2']=$_SESSION['ustock2']+0.1;
$_SESSION['exp']=$_SESSION['exp']+0.1;
$_SESSION['hab']=$_SESSION['hab']+0.1;
$_SESSION['stock1']= './objet/rien.gif';
$_SESSION['qstock2']= $_SESSION['qstock1'];
$_SESSION['qstock1']= '0';
$_SESSION['uobjet']=$_SESSION['uobjet']+0.1;
}
header("Location: page_membre.php");
exit();
break;
case
"./objet/valise.gif":
$sql = mysql_query("SELECT qstock1 FROM membres WHERE id = ". $id .";") or die(mysql_error());
$row = mysql_fetch_object($sql);
$data = $row->qstock2;
if (
$data>'50')
{
echo
'<center><font color="red">Le stock de destination est déjà au maximum.
<br>Il vous faut 1 autre objet pour pouvoir stocker plus. </font></center>
<center><font color="black"><a href="affichestock1.php">retour page précédente</a></font></center>'
;
}
else
{
$sql = "UPDATE membres SET stock2= '$transfert', ustock2=ustock2+0.1, uobjet=uobjet+0.1,
exp=exp+0.1, hab=hab+0.1, stock1= './objet/rien.gif', qstock2=qstock1, qstock1='0' WHERE id = "
. $id .";";
mysql_query($sql) or die('Erreur SQL '.$sql.'<br>'.mysql_error());
$_SESSION['stock2']= $transfert;
$_SESSION['ustock2']=$_SESSION['ustock2']+0.1;
$_SESSION['exp']=$_SESSION['exp']+0.1;
$_SESSION['hab']=$_SESSION['hab']+0.1;
$_SESSION['stock1']= './objet/rien.gif';
$_SESSION['qstock2']= $_SESSION['qstock1'];
$_SESSION['qstock1']= '0';
$_SESSION['uobjet']=$_SESSION['uobjet']+0.1;
}
header("Location: page_membre.php");
exit();
break;
case
"./objet/malle.gif":
$sql = mysql_query("SELECT qstock1 FROM membres WHERE id = ". $id .";") or die(mysql_error());
$row = mysql_fetch_object($sql);
$data = $row->qstock2;
if (
$data>'100')
{
echo
'<center><font color="red">Le stock de destination est déjà au maximum.
<br>Il vous faut 1 autre objet pour pouvoir stocker plus. </font></center>
<center><font color="black"><a href="affichestock1.php">retour page précédente</a></font></center>'
;
}
else
{
$sql = "UPDATE membres SET stock2= '$transfert', ustock2=ustock2+0.1, uobjet=uobjet+0.1,
exp=exp+0.1, hab=hab+0.1, stock1= './objet/rien.gif', qstock2=qstock1, qstock1='0' WHERE id = "
. $id .";";
mysql_query($sql) or die('Erreur SQL '.$sql.'<br>'.mysql_error());
$_SESSION['stock2']= $transfert;
$_SESSION['ustock2']=$_SESSION['ustock2']+0.1;
$_SESSION['exp']=$_SESSION['exp']+0.1;
$_SESSION['hab']=$_SESSION['hab']+0.1;
$_SESSION['stock1']= './objet/rien.gif';
$_SESSION['qstock2']= $_SESSION['qstock1'];
$_SESSION['qstock1']= '0';
$_SESSION['uobjet']=$_SESSION['uobjet']+0.1;
}
header("Location: page_membre.php");
exit();
break;
case
"./objet/citerne.gif":
$sql = mysql_query("SELECT qstock1 FROM membres WHERE id = ". $id .";") or die(mysql_error());
$row = mysql_fetch_object($sql);
$data = $row->qstock2;
if (
$data>'300')
{
echo
'<center><font color="red">Le stock de destination est déjà au maximum.
<br>Il vous faut 1 autre objet pour pouvoir stocker plus. </font></center>
<center><font color="black"><a href="affichestock1.php">retour page précédente</a></font></center>'
;
}
else
{
$sql = "UPDATE membres SET stock2= '$transfert', ustock2=ustock2+0.1, uobjet=uobjet+0.1,
exp=exp+0.1, hab=hab+0.1, stock1= './objet/rien.gif', qstock2=qstock1, qstock1='0' WHERE id = "
. $id .";";
mysql_query($sql) or die('Erreur SQL '.$sql.'<br>'.mysql_error());
$_SESSION['stock2']= $transfert;
$_SESSION['ustock2']=$_SESSION['ustock2']+0.1;
$_SESSION['exp']=$_SESSION['exp']+0.1;
$_SESSION['hab']=$_SESSION['hab']+0.1;
$_SESSION['stock1']= './objet/rien.gif';
$_SESSION['qstock2']= $_SESSION['qstock1'];
$_SESSION['qstock1']= '0';
$_SESSION['uobjet']=$_SESSION['uobjet']+0.1;
}
header("Location: page_membre.php");
exit();
break;

}
mysql_close();
?>



RE: pb condition avec operateur de comparaison ! - Shidame - 21-03-2007

Si je peux me permettre tu devrais repenser un peu ton code, il y a beaucoup de redondance.
Dans chaque condition de ton switch tu effectues globalement les meme actions.
Essai de noter en pseudo code (algo) ce que tu veux ca te permettra de l'optimiser.
ca ne sert a rien de faire 10 requete avec a chaque fois 1 seul champs autant faire des le début ca :
Code PHP :
<?php 
$sql
= mysql_query("SELECT objet, transfert, qstock1, qstock2 FROM membres WHERE id = ". $id .";") or die(mysql_error());
$row = mysql_fetch_object($sql);
/**
* tu peux utiliser directement
*$row->objet
*$row->transfert
*$row->qstock1
*$row->qstock2
*/
De plus ca ca ne peux fonctionner :
Code PHP :
<?php 
$sql
= mysql_query("SELECT qstock1 FROM membres WHERE id = ". $id .";") or die(mysql_error());
$row = mysql_fetch_object($sql);
$data = $row->qstock2; // ici tu fais appel a un champ non selectionné c'est qstock1 que ta selectionné

Bref, reprend un peux ton code en etant un poil plus rigoureux et pense a éviter la redondance du code il en sera que plus lisible.
Si tu as besoin demande des précisions.


RE: pb condition avec operateur de comparaison ! - hicks - 21-03-2007

Héhé je profites de mon premier jour au sein de votre sympathique communauté pour faire le malin.

Alors moi je dis, debugger un programme est un art. Un art laborieux certe mais un art dont les bases sont très simple à intégrer. En gros il faut que tu parviennes à voir ce que fait ton script étape par étape et pour ça rien de mieux que des "echo" partout.

Problème : mon script fonctionne pas.
Solution : (ouais je suis assez pour les exemple didactique)
1) Identifier l'endroit où ça pose problème.
=> En l'occurence tu as trouvé puisque tu identifies ce satané IF.

2) Ensuite rien de bien méchant, je blinde mon code de "echo" pour voir ce qui se passe et en théorie je dois comprendre le pourquoi du comment.
=> Ici ça donnerait à vue de nez.

switch ($donnee){
case "./objet/rien.gif":
$sql = mysql_query("SELECT qstock1 FROM membres WHERE id = ". $id .";") or die(mysql_error());
$row = mysql_fetch_object($sql);
echo "DEBBUG - sql = " . "SELECT qstock1 FROM membres WHERE id = ". $id .";" ;

$data = $row->qstock1;

echo "DEBBUG - data = " . $data ;
if ($data>'10') {
echo "DEBBUG - je suis dans le IF " ;
echo '<center><font color="red">Le stock de destination est (ou va etre) déjà au maximum.
<br>Il vous faut 1 autre objet pour pouvoir stocker plus. </font></center>
<center><font color="black"><a href="affichestock1.php">retour page précédente</a></font></center>';
}
else {
echo "DEBBUG - je suis dans le ELSE " ;
...
}

=> Avec ça tu auras normalement au moins affiché ta requête sql que tu pourras rejouer sur ta base de donnée en direct pour voir ce que ça ramène. Et en plus tu veras si tu passes dans le IF ou dans le ELSE et la valeur qu'à pris ta variable $data.

A noter que le conseil de Shidame doit être absolument suivit. Soit $data est un chiffre et alors tu retires les cotes sur ton 10. Soit c'est une chaine de caractères et alors il faut utiliser une fonction pour comparer deux chaines ... :heuuu: strcmp() je crois ...

En espérant avoir pu t'être utile :roll: