Vérifier si les champs d'un formulaire sont vides ou non..

Signaler
Messages postés
8
Date d'inscription
dimanche 6 juillet 2014
Statut
Membre
Dernière intervention
22 juillet 2014
-
Messages postés
29761
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
18 octobre 2020
-
Bonjour,
J'ai crée un formulaire pour remplir les informations d'une nouvelle personne pour que cela s'ajoute à la base de donnée.

Dans mon résonnement je voulais vérifier si l'un des champs est vide ou pas, si c'est le cas "erreur-empty" s'affichera dans l'URL de la page.
sinon les infos de la personne seront stockés dans la base de donnée 'Personne'.

La table 'Personne' possède les attributs:ID,Nom,Prenom et Grade (ce dernier est une liste déroulante).

Mon problème est que quand je remplis tous les champs, le message d'erreur 'erreur_empty' s'affiche.

j'ai vérifié les conditions de ma boucle et je ne vois pas où est le problème..
voici la portion de code qui me pose problème:

<?php
 //Connection à la BDD
  $bdd= new PDO('mysql:host=localhost;dbname=AlOmrane','root', '');
 
 
  if (isset($_POST['send']))
  {
   $req= $bdd->prepare('SELECT COUNT(IDP) AS nbl FROM Personne WHERE IDP= ?');
   $req->execute(array($_POST['IDP']));
   $result= $req->fetch();
   
   if (empty($_POST['IDP']) || empty($_POST['Nom']) || empty($_POST['Prenom']) || $_POST['Grade']=="selected")                    {
     header('Location: Personnel.php?error=empty'); 
    }
 //Ne pas répeter l'IDP
 
    elseif($result['nbl']>0)
    {
     header('Location: Personnel.php?error=IDP_Exist');
    }
    
 //Remplissage des champs
  
     else{
      $req->closeCursor();
      
      $IDP=htmlspecialchars($_POST['IDP']);
      $Nom=htmlspecialchars($_POST['Nom']);
      $Prenom=htmlspecialchars($_POST['Prenom']);
      $Grade=htmlspecialchars($_POST['Grade']);
    
    
 // Les requetes SQL : Remplissage BDD
    $req=$bdd->prepare('INSERT INTO Personne(IDP, Nom, Prenom, Grade) VALUES(:IDP, :Nom, :Prenom, :Grade)');
    $req->execute(array(
        'IDP' => $IDP,
        'Nom' => $Nom,
        'Prenom' => $Prenom,
        'Grade' => $Grade
        ));
        $req->closeCursor();
        
        header('Location: Personnel.php?info=register');   
     }
     
  }
   
  else{
    header('Location: Personnel.php');
   }
    
   
 ?>

3 réponses

Messages postés
14875
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
17 octobre 2020
446
Bonjour, j'ai ajouté les balsises de codes à ton message.
Voir ici comment utiliser la coloration syntaxique
Messages postés
29761
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
18 octobre 2020
338
Bonjour,

Je serais toi... je récupèrerai toutes mes variables POST avant le traitement.

Par exemple :


      $IDP=isset($_POST['IDP'])?htmlspecialchars($_POST['IDP']):false;
      $Nom=isset($_POST['Nom'])?htmlspecialchars($_POST['Nom']):false;
      $Prenom=isset($_POST['Prenom'])?htmlspecialchars($_POST['Prenom']):false;
      $Grade=isset($_POST['Grade'])?htmlspecialchars($_POST['Grade']):false;


  if ( !$IDP || !$Nom || !$Prenom || !$Grade  || $Grade=="selected"){
     header('Location: Personnel.php?error=empty'); 
    }


Messages postés
29761
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
18 octobre 2020
338
Au cas où ....fais aussi un echo de tes différentes variables pour voir ce qu'elles valent....
Messages postés
8
Date d'inscription
dimanche 6 juillet 2014
Statut
Membre
Dernière intervention
22 juillet 2014

Toujours rien..
quand j'ai vérifié avec des echo j'ai trouvé que "IDP" et "Grade" restent vides même si je les rempli..
voici le code du formulaire:

<form method="post" action="AP.php">
<input type="hidden" name="send" />
<h4>IDP :</h4>

<input type="text" name="IDP" />

<h4>Nom :</h4>

<input type="text" name="Nom"/>

<h4>Prénom :</h4>

<input type="text" name="Prenom"/>
<h4>Code Grade :</h4>

<select name="Grade" size="1" id="Grade">
<option value="selected" id="selected">Saisissez votre statut</option>
<option value="1">01-DirecteurGénérale</option>
<option value="2">02-HorsCadre</option>
<option value="3">03-CadreSupérieur</option>

</select>


<input type="submit" value="Ajouter" />

</form>
Messages postés
8
Date d'inscription
dimanche 6 juillet 2014
Statut
Membre
Dernière intervention
22 juillet 2014

j'ajoute cela à la place de Echo et on m'affiche ceci:
Array ( [send] => [IDP] => 1234 [Nom] => Toto [Prenom] => Sara [Grade] => 8 ) 8
Messages postés
8
Date d'inscription
dimanche 6 juillet 2014
Statut
Membre
Dernière intervention
22 juillet 2014

         if ( !$IDP || !$Nom || !$Prenom || !$Grade  || $Grade!="selected")
{
print_r($_POST);
//echo"$Grade";

// header('Location: Personnel.php?error=empty');
}
Messages postés
29761
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
18 octobre 2020
338
Tu vois bien que GRADE n'est pas égale à SELECTED... donc normal que tu sois dans ton if...

De plus.. attention... les balises OPTION.. tu leur mets une VALUE .. par un ID...
N'utilises pas non plus "selected" mais plutot une value à Zéro... (selected est un mot "réservé")
// LA LIGNE  
<option value="selected" id="selected">Saisissez votre statut</option>


// A REMPLACE PAR :
 <option value="selected" value="0">Saisissez votre statut</option>


et donc ton if devient :

if ( !$IDP || !$Nom || !$Prenom || !$Grade  || $Grade!=0){

echo " erreur de saisie dans les champs" ;
print_r($_POST);



}else{

Echo " -> OK";

}

Messages postés
8
Date d'inscription
dimanche 6 juillet 2014
Statut
Membre
Dernière intervention
22 juillet 2014

Je viens de modifier mon code

if ( !$IDP || !$Nom || !$Prenom || !$Grade || $Grade!=0)
{

print_r($_POST);
echo"$Grade";
echo"$IDP";

}
Les Echo m'affiche bien le contenu des champs
mais quand je les remplace par la redirection :

if ( !$IDP || !$Nom || !$Prenom || !$Grade || $Grade!=0)
{
header('Location: Personnel.php?error=empty');
}
Cela me redirige toujours a "Personnel.php?error=empty" même si les champs sont remplis
( PS: pour $GRADE c'est !=0 ou bien ==0 ? )
Messages postés
29761
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
18 octobre 2020
338
oups... oui.. ==0 pardon.