jene vois pas ou est le pb de condition?

Eléphant du PHP | 250 Messages

19 mai 2007, 19:43

Bonjour,
ce bout de script ne fonctionne pas, pourquoi?
<?php
session_start();
$id = $_SESSION['id'];
include 'connexion.php';
$sql = "SELECT qstockvehicule ".
       "FROM membres  ".
       "WHERE id = ". $id .";"; 
$res=mysql_query($sql) or die('Erreur SQL '.$sql.'<br>'.mysql_error());
    $data = mysql_fetch_assoc($res);
if($data>30) 
       {
header ("Location: alertedepsurcharge.htm");
}

ViPHP
ViPHP | 5924 Messages

19 mai 2007, 19:50

Parce que...

Ecoute, si tu crois qu'on est devin, ou bien alors qu'on a envie de chercher longtemps quelquechose qui nous serait apparu tout de suite comme une évidence si on avait un peu plus d'explications, tu te trompes.

Donc, si tu veux qu'on t'aide, il va falloir en dire un peu plus...

Eléphant du PHP | 250 Messages

19 mai 2007, 22:23

<?php
session_start();
$id = $_SESSION['id'];
include 'connexion.php';
$sql = "SELECT qstockvehicule ".
       "FROM membres  ".
       "WHERE id = ". $id .""; 
$res=mysql_query($sql) or die('Erreur SQL '.$sql.'<br>'.mysql_error());
    $data = mysql_fetch_assoc($res);
if($data['qstockvehicule'] >30)
       {
header ("Location: alertedepsurcharge.htm");
}
else if (isset($_POST['DIR']))
   {
switch ($_POST['DIR']){
    case "N":
        $dirx = $posx;
    $diry = $posy-1;
$sql = "UPDATE membres SET posx=posx, posy=posy-1, ptdep=ptdep-1, vie=vie-0.5, uvehicule=uvehicule+0.5  WHERE id = ". $id .";"; 
    mysql_query($sql) or die('Erreur SQL '.$sql.'<br>'.mysql_error());
    $_SESSION['ptdep']=$_SESSION['ptdep']-1;
	$_SESSION['posx']=$_SESSION['posx'];
	$_SESSION['posy']=$_SESSION['posy']-1;
    $_SESSION['vie']=$_SESSION['vie']-0.5;
	$_SESSION['uvehicule']=$_SESSION['uvehicule']+0.5;
        header("Location: locaperso.php");
   break;
    case "S":
        $dirx = $posx;
    $diry = $posy+1;
$sq2 = "UPDATE membres SET posx=posx, posy=posy+1, ptdep=ptdep-1, vie=vie-0.5, uvehicule=uvehicule+0.5  WHERE id = ". $id .";"; 
    mysql_query($sq2) or die('Erreur SQL '.$sq2.'<br>'.mysql_error());
    $_SESSION['ptdep']=$_SESSION['ptdep']-1;
	$_SESSION['posx']=$_SESSION['posx'];
	$_SESSION['posy']=$_SESSION['posy']+1;
    $_SESSION['vie']=$_SESSION['vie']-0.5;
	$_SESSION['uvehicule']=$_SESSION['uvehicule']+0.5;
        header("Location: locaperso.php");
   break;
    case "E":
        $dirx = $posx+1;
    $diry = $posy;
$sq3 = "UPDATE membres SET posx=posx+1, posy=posy, ptdep=ptdep-1, vie=vie-0.5, uvehicule=uvehicule+0.5   WHERE id = ". $id .";"; 
    mysql_query($sq3) or die('Erreur SQL '.$sq3.'<br>'.mysql_error());
    $_SESSION['ptdep']=$_SESSION['ptdep']-1;
	$_SESSION['posx']=$_SESSION['posx']+1;
	$_SESSION['posy']=$_SESSION['posy'];
    $_SESSION['vie']=$_SESSION['vie']-0.5;
	$_SESSION['uvehicule']=$_SESSION['uvehicule']+0.5;
        header("Location: locaperso.php");
   break;
    case "O":
        $dirx = $posx-1;
    $diry = $posy;
$sq4 = "UPDATE membres SET posx=posx-1, posy=posy, ptdep=ptdep-1, vie=vie-0.5, uvehicule=uvehicule+0.5   WHERE id = ". $id .";"; 
    mysql_query($sq4) or die('Erreur SQL '.$sq4.'<br>'.mysql_error());
    $_SESSION['ptdep']=$_SESSION['ptdep']-1;
	$_SESSION['posx']=$_SESSION['posx']-1;
	$_SESSION['posy']=$_SESSION['posy'];
    $_SESSION['vie']=$_SESSION['vie']-0.5;
	$_SESSION['uvehicule']=$_SESSION['uvehicule']+0.5;
        header("Location: locaperso.php");
   break;
  }
	header("Location: affichemap.php");
 }
mysql_close();
?>

ViPHP
ViPHP | 5924 Messages

19 mai 2007, 23:31

:shock:
Je crois que tu n'as pas compris là. Nous donner plus de code ne nous aidera pas à régler le problème. Mais, quand tu dis "ca marche pas", c'est quand même super générique. Si tu ne nous donnes aucune erreur, aucune précision sur ce qui ne marche pas, je vois mal comment on peut t'aider.

Et puis le truc je viens, je poste une ligne, un code, et puis basta, je trouve ca un peu irrespectueux, enfin bon, peux être me trompe-je...

Eléphant du PHP | 250 Messages

20 mai 2007, 00:06

Quand je dis que cela ne marche pas, c'est le premier select qui n'est pas pris en compte
$sql = "SELECT qstockvehicule ".............

le script passe à travers au lieu de rediriger vers la page "alertedepsurcharge.htm"

that's all :wink:

Mammouth du PHP | 1511 Messages

20 mai 2007, 00:40

Le problème n'est pas au niveau de la requête en elle même...
Tu veux vérifier que qstockvehicule n'est pas supérieur a 30.
Quand tu fais $data = mysql_fetch_assoc($res);, tu récuperes un tableau du premier résultat renvoyé par la requete et le pointeur interne se déplace sur le résultat suivant si il y a.
Donc avec $data tu as le premier résultat de ta requete, le tout dans un tableau.
Donc c'est plutôt $data['qstockvehicule'] qui contient la valeur numérique qstockvehicule et non $data ;)

Eléphant du PHP | 250 Messages

20 mai 2007, 22:59

désolé, mais meme avec ['qstockvehicule']
la condition n'est pas prise en compte :cry:

Eléphant du PHP | 445 Messages

21 mai 2007, 07:30

Fais peut-être un echo de $date['qstockvehicule'] pour voir ce qui t'est retourné.
LLDC
Ulti

Eléphant du PHP | 250 Messages

21 mai 2007, 14:19

l'echo n'affiche rien, la condition n'est tjrs pas prise en compte :?
Ce qui est curieux, c'est que je viens de m'apercevoir que j'ai au moins 5 autres scripts fonctionnant sur le meme principe et qui zappent la première condition!

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

21 mai 2007, 15:48

var_dump($data);
//te permet de voir si $data est > ou < à 30
Règle n°2 du webmaster : Toujours commencer par le HTML qu'on veut obtenir....toujours ! :priere:
J'aime apprendre de nouvelles choses.

Eléphant du PHP | 250 Messages

21 mai 2007, 16:33

voilà une astuce? qui fonctionne!
$surcharge= "SELECT qstockvehicule ".
       "FROM membres  ".
       "WHERE id = ". $id .";"; 
$res=mysql_query($surcharge) or die('Erreur SQL '.$surcharge.'<br>'.mysql_error());
($data = mysql_result($res,0,'qstockvehicule'));
if ($data>30)
{
header("Location: alertedepsurcharge.htm");
}
etc..etc..etc....