Mettre un message pour dire qu'un champs existe déjà

Résolu
Baptiste0410 Messages postés 19 Date d'inscription   Statut Membre Dernière intervention   -  
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,

J'ai un petit problème c'est que j'ai fait une page PHP pour ajouter des capteurs et dans cet page j'ai fait un contrôle pour qu'on ne puisse pas enregistrer plusieurs fois le même capteurs. Mais cela marche bien sauf que j'ai mis un message d'erreur et je comprend pas pourquoi le message ne veut pas s'afficher.
<html>
<head>
 <link rel="stylesheet" href="style.css" />
</head>
<body>
<?php
 require('config.php');
  
 if (isset($_REQUEST['num_boitiers'], $_REQUEST['description']))
 {
  $num_boitiers = stripslashes($_REQUEST['num_boitiers']);
  $num_boitiers = mysqli_real_escape_string($conn, $num_boitiers); 
  
  $description = stripslashes($_REQUEST['description']);
  $description = mysqli_real_escape_string($conn, $description);
  
  //on teste l'existence des variables et on vérifie qu'elle ne sont pas vides
  if ((isset($num_boitiers) && !empty($num_boitiers)) && (isset($description) && !empty($description)))
  { 
  $req = "SELECT COUNT(*) FROM boitier_qae WHERE Num_boitiers='".$num_boitiers."'";
  //echo $req;
  $sql = mysqli_query($conn, $req) or die('Erreur SQL2 !<br/>'.$req.'<br/>'.mysqli_error($conn));
  //var_dump($sql);
  $data = mysqli_fetch_array($sql);
  //var_dump($data);
   if ($data[0] == '0')
   {
   $sql = "INSERT INTO boitier_qae(Num_boitiers, Description) VALUES ('$num_boitiers', '$description')";
   $res = mysqli_query($conn, $sql)or die('Erreur SQL2 !<br/>'.$sql.'<br/>'.mysqli_error($conn));
  
    if($res)
     { 
      echo "<div class='sucess'>
        Le capteur existe déjà !
        <p> Pour allez sur la page liste capteur <a href='liste_capteurs.php'>Cliquez ici</a></p>
        </div>";
     }
     else 
     {
      echo "Erreur de saisie !";
     }
   }  
  }
  
 }
?>
  <form class="box" action="" method="post" name="ajout">
  <h1 class="box-title">Ajouter un nouveau capteur</h1>
  <input type="text" class="box-input" name="num_boitiers" placeholder="Numéro de boitier" required />
  <input type="text" class="box-input" name="description" placeholder="Description" required />
  <input type="submit" name="submit" value="Ajouter" class="box-button" />
  <p class="box-register">Revenir à la page liste capteur <a href="liste_capteurs.php">Cliquez ici</a></p>
  </form>
</body>
</html>

EDIT : Ajout des balises de code

Merci de votre aide

Baptiste
A voir également:

1 réponse

jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Bonjour,

Déjà, lorsque tu postes du code sur le forum, merci d'utiliser les BALISES DE CODE.
Explications ( à lire ENTIEREMENT !! ) disponibles ici : https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code

Ensuite, Ben oui...
Tu fais une requête INSERT ... et cette requête, sauf si elle rencontre une erreur... retournera toujours TRUE.

 if (isset($_REQUEST['num_boitiers'], $_REQUEST['description'])) {
  $num_boitiers = stripslashes($_REQUEST['num_boitiers']);
  $num_boitiers = mysqli_real_escape_string($conn, $num_boitiers); 
  
  $description = stripslashes($_REQUEST['description']);
  $description = mysqli_real_escape_string($conn, $description);
  
  //on teste l'existence des variables et on vérifie qu'elle ne sont pas vides
  if ((isset($num_boitiers) && !empty($num_boitiers)) && (isset($description) && !empty($description))) { 
  $sql = "SELECT COUNT(*) as NB FROM boitier_qae WHERE Num_boitiers='".$num_boitiers."'";
  //echo $req;
  $req = mysqli_query($conn, $sql) or die('Erreur SQL2 !<br/>'.$sql.'<br/>'.mysqli_error($conn));
  //var_dump($sql);
  $data = mysqli_fetch_array($req);
  //var_dump($data);
   if ($data['NB'] == '0') {
     $sql = "INSERT INTO boitier_qae(Num_boitiers, Description) VALUES ('$num_boitiers', '$description')";
     $res = mysqli_query($conn, $sql)or die('Erreur SQL2 !<br/>'.$sql.'<br/>'.mysqli_error($conn));
    
      if($res) { 
        echo "<div class='sucess'>
          Capteur ajouté avec succès !
          <p> Pour allez sur la page liste capteur <a href='liste_capteurs.php'>Cliquez ici</a></p>
          </div>";
       } else {
         echo "Erreur de saisie !";
       }
     }  else{
          echo "<div class='error'>
          Le capteur existe déjà !
          <p> Pour allez sur la page liste capteur <a href='liste_capteurs.php'>Cliquez ici</a></p>
          </div>";
     }
  }
 }


A noter qu'il vaut mieux éviter d'utiliser la variable $_REQUEST mais spécifier si c'est du GET ou du POST.
(dans ton cas.. du POST ... donc à remplacer par $_POST )
0