Page 1 sur 1

syntaxe incorrecte avec un if?

Posté : 16 juil. 2021, 14:44
par nestor94
bonjour,

je n'arrive pas à faire fonctionner cette condition:
$sql = "SELECT qte_contenant, vehicule, qte_vehicule FROM membres WHERE id=:id";
$pdostat = $bdd->prepare($sql);
$pdostat->bindvalue(':id',$id ,PDO::PARAM_INT);
$pdostat->execute();
$resultat = $pdostat->fetch();  
if (!empty($resultat )) { 
$qte_contenant = $resultat['qte_contenant'];
$vehicule = $resultat['vehicule'];
$qte_vehicule = $resultat['qte_vehicule'];
}
if (($vehicule === '/vehicules/cheval.gif') AND ($qte_contenant + $qte_vehicule > 30))
{
header('Location:capa_vehicule_pb.html');
exit();
}




Re: syntaxe incorrecte avec un if?

Posté : 16 juil. 2021, 15:15
par @rthur
Fais un var_dump($resultat) juste avant ton if() pour savoir ce qu'il y a dedans et comprendre pourquoi le empty() ne fonctionne pas.

Sinon personnellement j'utiliserai comme condition :
if ($pdostat->rowCount() > 0)
RowCount permet de connaitre le nombre de lignes de résultat :
https://www.php.net/manual/fr/pdostatement.rowcount.php

Re: syntaxe incorrecte avec un if?

Posté : 16 juil. 2021, 20:40
par nestor94
le var_dump de $resultat est OK et retourne les bonnes valeurs.
Modifs faites ainsi.
$sql = "SELECT qte_contenant, vehicule, qte_vehicule FROM membres WHERE id=:id";
$pdostat = $bdd->prepare($sql);
$pdostat->bindvalue(':id',$id ,PDO::PARAM_INT);
$pdostat->execute();
$resultat = $pdostat->fetch();  
    if ($pdostat->rowCount() > 0)
    { 
    $qte_contenant = $resultat['qte_contenant'];
    $vehicule = $resultat['vehicule'];
    $qte_vehicule = $resultat['qte_vehicule'];
    }
   if (($vehicule === '/vehicules/cheval.gif') AND ($qte_contenant + $qte_vehicule > 30))
  {
header('Location:capa_vehicule_pb.html');
exit();
}
Cela devrait rediriger vers le header mais ca ne le fait pas :?

Re: syntaxe incorrecte avec un if?

Posté : 18 juil. 2021, 00:52
par @rthur
Fais un var_dump() de tes paramètres dans tes if
Si ton code ne rentre pas dans un if() c'est que la condition que tu as mise n'est pas remplie.

Re: syntaxe incorrecte avec un if?

Posté : 19 juil. 2021, 16:00
par nestor94
C'est dans :
 if (($vehicule === '/vehicules/cheval.gif') AND ($qte_contenant + $qte_vehicule > 30))
que les var_dump respectifs n'affichent rien, contrairement au if précédent.

j'ai une autre condition un peu plus loin, qui, elle fonctionne !
	if (($contenu_vehicule !== '/objets/rien.gif') AND ($contenu_vehicule !== $contenu_contenant)) 
	{
	header('Location:erreur_depla_vehicule.php');
	exit;
	}	

Re: syntaxe incorrecte avec un if?

Posté : 19 juil. 2021, 16:58
par @rthur
var_dump($vehicule, $qte_contenant, $qte_vehicule, $qte_contenant + $qte_vehicule, $qte_contenant + $qte_vehicule > 30);
Placé avant tes if, ça affiche forcément quelque chose

Re: syntaxe incorrecte avec un if?

Posté : 19 juil. 2021, 23:27
par nestor94
C:\wamp64\www\deplacer_contenu_vehicule.php:18:string '/objets/cheval.gif' (length=18)

C:\wamp64\www\deplacer_contenu_vehicule.php:18:string '5' (length=1)

C:\wamp64\www\deplacer_contenu_vehicule.php:18:string '29' (length=2)

C:\wamp64\www\deplacer_contenu_vehicule.php:18:int 34

C:\wamp64\www\deplacer_contenu_vehicule.php:18:boolean true

Re: syntaxe incorrecte avec un if?

Posté : 20 juil. 2021, 00:06
par or 1
$vehicule === '/vehicules/cheval.gif
string '/objets/cheval.gif' (length=18)

Re: syntaxe incorrecte avec un if?

Posté : 20 juil. 2021, 12:41
par nestor94
:oops:
oui, il y avait une coquille en database !