Recherche l'existance d'une valeur dans une table

damboutheo

damboutheo Le 28 avril 2020 Ă  12:58

Bonjour,

Besoin d'aide svp. Je veux verifier l'existence d'une valeur dans une table afin d'afficher s'il existe ou pas. Voici mon code mais il ne renvoie aucune reponse ni une erreur:

`require(database.php); 
 if(!empty($_POST)){
          extract($_POST);
          $valid = false;

          $numcompte = htmlspecialchars(trim($numcompte));
            $req = $statement->query('Select numcompte from user where numcompte = :numcompte', array('numcompte' => $numcompte));
          $req = $req->fetch();

          if(!empty($numcompte) && $req['numcompte']){
            $valid = true;
            $_SESSION['flash']['danger'] = "Ce compte n'existe pas! veuillez le creer";

              }
            } 
        ?>`

Si quelqu'un a un exemple simple qu'il me le montre svp

PrimFX

PrimFX Le 20 mai 2020 à 12:18 (Édité le 20 mai 2020 à 12:19)

Hello @damboutheo,

Le fait qu'aucun retour ne soit affiché vient du fait que tu essaies de mixer une requête query (non préparée) avec des paramètres propres à une requête prepare(préparée).

Voici comment rectifier ton code pour que la requĂŞte fonctionne :

$numcompte = htmlspecialchars(trim($numcompte));
if (!empty($numcompte)) {
    $req = $statement->prepare('SELECT numcompte FROM user WHERE numcompte = :numcompte');
    $req->execute(array('numcompte' => $numcompte));
    $req = $req->fetch();

    if (!$req['numcompte']) {
        $valid = true;
        $_SESSION['flash']['danger'] = "Ce compte n'existe pas! veuillez le creer";
    }
}

Ensuite, pour avoir une syntaxe un poil plus concise pour vérifier l'existence, il existe une petite technique qui consiste à utiliser SELECT 1 ... qui permettra à ta requête de renvoyer soit 1 soit false selon qu'un résultat a été trouvé ou non pour ta requête (testant ainsi l'existance de données) :

$numcompte = htmlspecialchars(trim($numcompte));
if (!empty($numcompte)) {
    $req = $statement->prepare('SELECT 1 FROM user WHERE numcompte = :numcompte');
    $req->execute(array('numcompte' => $numcompte));

    if (!$req->fetchColumn()) {
        $valid = true;
        $_SESSION['flash']['danger'] = "Ce compte n'existe pas! veuillez le creer";
    }
}

En espĂ©rant avoir pu t'aider 😉

A bientĂ´t,

Boris

EnderMC

EnderMC Le 21 mai 2020 à 16:29 (Édité le 29 mai 2020 à 10:30)

Hello @damboutheo,

Sinon tu peux aussi faire un rowCount(). En gros ça compte les colonnes de la table sélectionnée

Exemple :

$variable = rowCount();
// Si ça n'existe pas
if($variable == 0){
    $valid = true;
    $_SESSION['flash']['danger'] = "Ce compte n'existe pas! veuillez le creer";
} else {
    // Ton code PHP si ça existe
}
Vous devez être connecté pour poster une réponse. Se connecter ou Créer un compte