condition requete sql

Le problème exposé dans ce sujet a été résolu.

Bonjour à tous !

Je ne comprends pas ce qui cloche dans ma condition

// Recherche d'un utilisateur existant
$use = $pdo->prepare('SELECT user_id FROM dishes_found WHERE user_id ='.$_SESSION['auth']->id);
$use->execute([$_SESSION['auth']->id]);
$user=$use->fetch();
var_dump($user);    

//Recherche liste des entrées
if ($user !== false){
    $query = $pdo->query('SELECT id_dish, dish_name, dish_root, category_id, dishes_found.choix  FROM cafeland_dishes INNER JOIN dishes_found ON id_dish = dish_id WHERE user_id='.$_SESSION['auth']->id.' AND category_id=1  ORDER BY dish_name ASC');
    if($query === false){
        var_dump($pdo->errorInfo());
        die('Erreur SQL');
}  else {
    $query = $pdo->query('SELECT * FROM cafeland_dishes  WHERE category_id = 1 ORDER BY dish_name ASC');
    }     
};                  
$list_entrees = $query->fetchAll(PDO::FETCH_OBJ);

Capture6.PNG
Capture6.PNG

L’utilisateur est bien existant dans ma BDD pourtant la condition est passée dans le else. J’ai ouvert une autre page avec un autre utilisateur qui n’a rien inscrit dans la BDD donc le var_dump retourne "false" et mon tableau est quand meme vide.
J’ai biensur essayé == true et == false en inversant les requetes et ca ne change rien.

Voyez vous ou est le problème?

Merci d’avance

+0 -0

Salut ! Tu utilises mal la fonction isset.

Je suppose que le choix entré est dans $entree->choix et que ce dernier peut valoir oui, non ou ne_sais_pas.

La fonction isset vérifie si la variable qu’on lui donne existe et n’est pas null, et retourne true ou false si c’est (ou non) le cas. Ici, en faisant :

<?php if (isset($entree->choix)=='oui') { echo 'checked = "checked"'; } ?>

…tu compares isset($entree->choix) (qui ne peut être que true ou false, donc) à 'oui' ou 'non' — ça ne peut jamais être vrai !

Il y a donc deux possibilités, ici. Ou bien tu veux vérifier que la valeur est bien définie ; alors, il faut d’un côté vérifier qu’elle existe (avec isset), et ensuite qu’elle vaut ce que tu veux, en combinant les deux tests avec &&.

Ou alors tu sais que la variable existe, et alors il suffit de tester sans toucher à isset :

<?php if ($entree->choix == 'oui') { echo 'checked = "checked"'; } ?>
+1 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte