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

Résolu/Fermé
Baptiste0410
Messages postés
21
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
35769
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
2 juillet 2022
- 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

1 réponse

jordane45
Messages postés
35769
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
2 juillet 2022
4 200
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