Page 1 sur 1

pb avec condition?!!!

Posté : 21 mars 2007, 23:59
par Invité
Bonsoir, j'y ai passé la soirée et je ne comprends pas : la condition "if $row>10" ne fonctionne pas............................
voici le script:

<?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'];
$req= mysql_query("SELECT objet FROM membres WHERE id = ". $id .";") or die(mysql_error());
$resu = mysql_fetch_assoc($req);
$objet= $resu['objet'];
 switch ($objet){
  case "./objet/rien.gif":
$sql = mysql_query("SELECT qstock1 FROM membres WHERE id = ". $id .";") or die(mysql_error());
      $row = mysql_fetch_object($sql);
       $qstock1= $row['qstock1'];
           if ($row > 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();
?>

Posté : 22 mars 2007, 00:06
par Ryle
Ta variable $row contient le résultat de la fonction mysql_fetch_object(), qui s'y on s'en réfère à la doc renvoi un tableau .... et un tableau peut difficilement être supérieur à 10 ;)

ne serait-ce pas plutôt $qstock1 ou $row['qstock1'] qu'il te faudrait tester ? :)

Posté : 22 mars 2007, 22:44
par Invité
j'ai mis celà à la place et l'update se fait alors que $qstock1 est plus grand que 10...
 switch ($objet){
  case "./objet/rien.gif":
$sql = mysql_query("SELECT qstock1 FROM membres WHERE id = ". $id .";") or die(mysql_error());
      $row = mysql_fetch_object($sql);
       $qstock1= $row['qstock1'];
           if ($qstock1 > 10)
		   {
en mettant ce qui suit, l'update ne se fait pas (logique presque?) mais mon message d'erreur ne s'affiche pas ( 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>)
switch ($objet){
  case "./objet/rien.gif":
$sql = mysql_query("SELECT qstock1 FROM membres WHERE id = ". $id .";") or die(mysql_error());
      $row = mysql_fetch_assoc($sql);
       $qstock1= $row['qstock1'];
           if ($qstock1 > 10)
		   {
[

Posté : 23 mars 2007, 00:04
par Petibidon en vadrouille
hello,

une info pour te simplifier la vie : tu peux séléctionner plusieurs champs dans une seule requete...

"SELECT transfert, objet, qstock1 FROM membres WHERE id=" . $id

c'est beaucoup plus rapide (logique) que de le faire en plusieurs requetes. également plus simple à traiter.

ensuite fais bien attention en ce qui concerne les fonctions que tu utilises... mysql_fetch_assoc ou mysql_fetch_object ne renvoient pas le meme type de données.

_assoc renvoie un tableau auquel tu accèderas ainsi $montableau['champ'] alors que _object te renverra un objet auquel tu accéderas ainsi $monobjet->champ (HS: c'est marrant, le deuxième est beaucoup moins chiant à taper et pourtant personne ne l'utilise)

déja inspire toi de ceci pour épurer ton code, et tu y verras peut-etre plus clair pour trouver ton problème.

bon courage ! :)