[RESOLU] syntaxe incorrecte avec un if?

Eléphant du PHP | 165 Messages

16 juil. 2021, 14:44

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




Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9039 Messages

16 juil. 2021, 15:15

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
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphant du PHP | 165 Messages

16 juil. 2021, 20:40

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

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9039 Messages

18 juil. 2021, 00:52

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.
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphant du PHP | 165 Messages

19 juil. 2021, 16:00

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

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9039 Messages

19 juil. 2021, 16:58

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
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphant du PHP | 165 Messages

19 juil. 2021, 23:27

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

Mammouth du PHP | 1935 Messages

20 juil. 2021, 00:06

$vehicule === '/vehicules/cheval.gif
string '/objets/cheval.gif' (length=18)

Eléphant du PHP | 165 Messages

20 juil. 2021, 12:41

:oops:
oui, il y avait une coquille en database !