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