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

Résolu/Fermé
Baptiste0410 Messages postés 19 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 5 mai 2022 - Modifié le 31 mai 2021 à 19:19
jordane45 Messages postés 38437 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 23 février 2025 - 31 mai 2021 à 19:27
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 38437 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 23 février 2025 4 737
31 mai 2021 à 19:27
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