Partage
  • Partager sur Facebook
  • Partager sur Twitter

Vérificateur avant ajout

    20 mai 2019 à 20:54:08

    Bonjour,

    J'ai un petit soucis au niveau de mon vérificateur avant  l'ajout de la valeur.

    Pour l'expliqué je veux savoir si l'id du capteur existe déjà dans ma base de donnée si oui on retourne une erreur sinon on exécute la commande.

    c'est la que le problème intervient (je ne suis pas très à l'aise avec le pdo et le mysqli ) 

    mon erreur se trouve ligne 12.

    <?php
    $base = new PDO('mysql:host=localhost;dbname=maison','root' ,'');
    $count = $base->prepare('SELECT COUNT (*) FROM capteur WHERE id_capteur=?');
    $count->execute(array($_POST['id_capteur']));
    $number = $count->fetch();
    	
    if($number['id_capteur'] == 1) {
    	echo 'id_capteur deja existant';
    }
    else {
          $requete=$base->prepare('INSERT INTO capteur VALUES(NULL,"'.$_POST['id_capteur'].'","'.$_POST['type'].'"');
    		$requete=$base->execute();
    		 header('Location: page3.php');
    }
    ?>

    Merci d'avance =) 

    -
    Edité par mathieumahé1 20 mai 2019 à 20:59:06

    • Partager sur Facebook
    • Partager sur Twitter
      20 mai 2019 à 20:59:07

      Bonjour,

      Il faut activer les erreurs PDO (voir ma signature). Ton count doit avoir un alias. Ce n'est pas id_capteur que tu récupères.

      • Partager sur Facebook
      • Partager sur Twitter
        20 mai 2019 à 21:01:05

        Bonjour.

        Tu te trompe, ta requête SQL ne te retournera un enregistrement que si un enregistrement correspond à la condition que tu lui passe, il te faut donc remplacer :

        if($number['id_capteur'] == 1) {

        Par :

        if($number) {

        De plus, inutile de faire un COUNT dans ta requête SQL.

        Sinon, regardes bien ta seconde utilisation de PDO comparé à la première que tu avais bien faite.


        • Partager sur Facebook
        • Partager sur Twitter

        Face a quelqu'un pour qui l'on n'éprouve que de l'aversion et du mépris, les yeux d'un homme deviennent extrêmement froids et cruels.

          20 mai 2019 à 21:30:51

          bonjour, en faite ton algo et ta base doivent être fausse.

          Je m'explique sans rentrer dans les détails

          $_POST['id_capteur']

          "ne jamais croire  les données entré par l'utisateur" nous sommes tous d'accord la dessus mais la ou je bug c'est

          'INSERT INTO capteur VALUES(NULL,"'.$_POST['id_capteur'].'","'.$_POST['type'].'"'

          tu inseres une valeur null dans la colonne id_capteur qui doit être auto incrémenté et dans ue autre la valeur de post->id_capteur c'est normal que ca rale(cf phylodick et sa signature sur l'affichage des erreurs)


          • Partager sur Facebook
          • Partager sur Twitter
            20 mai 2019 à 21:40:14

            Son problème c'est surtout qu'il initialise une variable pour stocker le statement, mais au lieu de l'utiliser, il fait son execute sur l'objet PDO au lieu de PDOStatement.

            -
            Edité par Lartak 20 mai 2019 à 21:41:26

            • Partager sur Facebook
            • Partager sur Twitter

            Face a quelqu'un pour qui l'on n'éprouve que de l'aversion et du mépris, les yeux d'un homme deviennent extrêmement froids et cruels.

              20 mai 2019 à 21:58:39

              j'avais oublié de mettre une partir du code html 

              c'est juste pour verifier si l'id du capteur que l'utilisateur rentre n'est pas existante ,

              <div>
                <form method="post" action="addcapteur.php">
                  <label for="id_capteur">ID Capteur</label>
                  <input type="number" min="0" id="id_capteur" name="id_capteur" placeholder="Ajouter l'ID du capteur..">
              
                  <label for="type">Type Capteur</label>
                  <select id="type" name="type">
                    <option value="Anémomètre">Anémomètre</option>
                    <option value="température">température</option>
                    <option value="pluviomètre">pluviomètre</option>
              	  <option value="Amperemetre">Amperemetre</option>
              	  <option value="pluviomètre">pluviomètre</option>
                  </select>
                
                  <input type="submit" value="Ajouter">
                </form>
              </div>


              merci de vos reponse 

              • Partager sur Facebook
              • Partager sur Twitter

              Vérificateur avant ajout

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
              • Editeur
              • Markdown