[RESOLU] encore un problème de condition!

Eléphant du PHP | 345 Messages

06 mai 2021, 11:28

Bonjour,
Pourquoi cette condition en début de script ne s'exécute -t-elle pas? :roll:
<?php
session_start();
require_once 'config.php';
include 'verif_usure.php';
include'verif_PA.php';
$id = !empty($_SESSION['id']) ? $_SESSION['id'] : NULL;
$sql = "SELECT nbre_recolte FROM membres WHERE id=:id";
$pdostat = $bdd->prepare($sql);
$pdostat->bindvalue(':id',$id ,PDO::PARAM_INT);
$pdostat->execute();
$resultat = $pdostat->fetch();    
$nbre_recolte = $resultat['nbre_recolte'];
if ($nbre_recolte === 3)
{
header('Location:new_cycle_exploit_tabac.php');
}
bla bla bla
la suite
le var_dump de $nbre_recolte retourne bien la valeur en table qui est 3....

Avatar du membre
Mammouth du PHP | 1609 Messages

06 mai 2021, 11:38

Salut, si $nbre_recolte est bien égale à 3 alors le problème doit venir du triple = qui sert a tester une égalité stricte. Hors si $nbre_recolte est une chaine '3', c'est différent de 3. Tu dois utiliser dans ce cas le double égale.
php -r "echo '3' === 3 ? 'true' : 'false';" // false
php -r "echo 3 === 3 ? 'true' : 'false';" // true
php -r "echo '3' == 3 ? 'true' : 'false';" // true
Développeur web depuis + de 20 ans

Eléphant du PHP | 345 Messages

06 mai 2021, 18:15

Merci Saian, ça semble résolu avec les deux égal. J'ai rajouté exit() après le header car la redirection ne se faisait pas.