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

puups Messages postés 8 Date d'inscription dimanche 6 juillet 2014 Statut Membre Dernière intervention 22 juillet 2014 - Modifié par Whismeril le 22/07/2014 à 09:01
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 - 22 juil. 2014 à 12:31
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

Whismeril Messages postés 19022 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 17 avril 2024 656
22 juil. 2014 à 09:03
Bonjour, j'ai ajouté les balsises de codes à ton message.
Voir ici comment utiliser la coloration syntaxique
0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 344
22 juil. 2014 à 09:51
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'); 
    }


0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 344
22 juil. 2014 à 09:53
Au cas où ....fais aussi un echo de tes différentes variables pour voir ce qu'elles valent....
0
puups Messages postés 8 Date d'inscription dimanche 6 juillet 2014 Statut Membre Dernière intervention 22 juillet 2014
22 juil. 2014 à 10:27
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>
0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 344
22 juil. 2014 à 10:36
tu peux faire un
print_r($_POST);
0
puups Messages postés 8 Date d'inscription dimanche 6 juillet 2014 Statut Membre Dernière intervention 22 juillet 2014
Modifié par puups le 22/07/2014 à 11:03
j'ajoute cela à la place de Echo et on m'affiche ceci:
Array ( [send] => [IDP] => 1234 [Nom] => Toto [Prenom] => Sara [Grade] => 8 ) 8
0
puups Messages postés 8 Date d'inscription dimanche 6 juillet 2014 Statut Membre Dernière intervention 22 juillet 2014
22 juil. 2014 à 10:44
         if ( !$IDP || !$Nom || !$Prenom || !$Grade  || $Grade!="selected")
{
print_r($_POST);
//echo"$Grade";

// header('Location: Personnel.php?error=empty');
}
0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 344
22 juil. 2014 à 11:06
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";

}

0
puups Messages postés 8 Date d'inscription dimanche 6 juillet 2014 Statut Membre Dernière intervention 22 juillet 2014
22 juil. 2014 à 11:41
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 ? )
0
Rejoignez-nous