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

Signaler
Messages postés
11
Date d'inscription
lundi 23 mars 2020
Statut
Membre
Dernière intervention
1 juin 2021
-
Messages postés
32940
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
11 juin 2021
-
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

Messages postés
32940
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
11 juin 2021
3 556
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 )