Validation PHP (Le champs est-il vide)

Bonjour,

J'ai conçu un formulaire qui se valide avec Javascript, c'est bien!! tout fonctionne ,MAIS pour mon projet je dois le faire valider en PHP aussi pour les imbéciles qui désactive le Javascript pourtant tant utilisé.

Je commence donc par tenter de vérifier si mon champs prénom est vide == donne moi une erreur, comme vous voyez ci-dessous. Le problème c'est que le message affiche avant que je transmettre avec mon bouton submit ET le message reste là quand j'inscrit quelque chose dans le champs et que j'envoie. Je suis consciente qu'il me manque peut-être un bout de code, mais quoi?

<?php
$msgerreur="";
$erreur = false;

if(empty($_POST['sprenom'])){
$erreur;
echo ( $msgerreur.'Inscrire votre nom !');
}
else{
return true;
}

?>

<form method="post" action="ok.php" onsubmit="return valider();" >

<fieldset><legend>Entrez vos coordonnés</legend>
<!--prénom-->
<br />

<label> Prénom</label> <input type="text" name="sprenom" id="sprenom"/>

<!-- je ne met pas mes autres champs, car j'aimerais bien en valider un à la fois -- >

<input type="reset" value="Réinitialiser" />

<input type="submit" value="Transmettre" onclick="resetter()"/>

<!-- Les onclick et onsubmit sont en lien avec mon JS, ne pas en tenir compte-->

Jespère avoir été précise dans l'élaboration de ma question,

Merci d'avance

Anne-Mariz

6 réponses

  1. insérer 'required'

    <label for="email"> </label>
    <input type="email" name="email" id="email" placeholder="***@***" size="30" maxlength="30" required/>
    1. pour une vérif en php:

      <?php
      //return true ne sert à rien si ce n'est pas une fonction
      //la page s'appelle elle même, le traitement des vides est au début
      //ne mets pas onSubmit="...." dans <fomr   et onClick sur le bouton Submit 
      //en procédant ainsi tu vas tous les valider lors de l'envoi
      
      //init des variables
      $msgerreur="";
      $erreur = false;
      $sprenom="";
      $autreChamp="";
      //etc..
      
      if(isset($_POST['envoyer'])){
      	//le formulaire a été posté
      	if(empty($_POST['sprenom'])){
      		$erreur=true;
      		$msgerreur.='Inscrire votre nom !';
      		echo ( $msgerreur.'Inscrire votre nom !');
      	}else{
      		$sprenom=$_POST['sprenom'];
      	}
      	//autre champ
      	if($_POST['autre_champ'])){
      		$erreur=true;
      		$msgerreur.=' Inscrire votre ..... !';
      	}else{
      		$autreChamp=$_POST['autre_champ'];	
      	}
      	//etc..
      	
      	//message d'erreur eventuel
      	if($erreur){
      		echo $msgerreur;
      	}else{
      		//ton traitement si il n'y a pas d'erreur
      		// ......
      	
      	}
      }
      
      if(!isset($_POST['envoyer']) || $errreur){
      //on affiche ou ré affiche (avec ce qui est déjà saisi) le formulaire
      ?>
      
      <form method="post" action="" onsubmit="return valider();" >
      
      
      <fieldset><legend>Entrez vos coordonnés</legend>
      <!--prénom-->
      <br />
      
      <label> Prénom</label> <input type="text" name="sprenom" id="sprenom" value="<?php echo $sprenom; ?>" />
      
      
      
      <input type="reset" value="Réinitialiser" />
      
      
      <input name="envoyer" type="submit" value="Transmettre" /> 
      </form>
      <?php
      } //fin if
      ?>
      
      1. Contributeur
        Si on veut gérer le cas du JS désactivé, faut faire comme ça (code pas testé) :
        <script type="text/javascript">
        function validateForm()
        {
           if (taFonctionDeValidation)
           {
              document.myForm.validation.value = 'okay';
              return true;
           }
           return false;
        }
        </script>
        <form name="myForm" method="post" action="ok.php" onSubmit="return validateForm();">
        <input type="hidden" name="validation">
        <input type="submit" value="Envoyer">
        </form>
        1. Moi je fais ça pour bloquer une fonction avant l'envois du formulaire:

          <form method="post" action="ok.php?debloque" onsubmit="return valider();" >

          et ensuite :

          if(isset($_POST["debloque"])){ACTION}

          Pour ce qui est du fait que le messge reste apres, en php c'est dur de l'enlever, a part en faissant un rafraichissement de la page, ma solution consiste a mettre le message sous forme d'animation flash. le message aparait puis disparait.

          c'est du bidouillage mais bon...
          1. Voila ma méthode :
            	function verification() {		
            		var temoin = 0; 	
            		temoin = focuss("pseudo",verifPseudo("pseudo",temoin));
            		if (temoin != 0) {return false;}
            		if (temoin == 0) {return true;}
            	}


            Et si c'est true le php ne s'execute pas :)

            Ca peut être utile a tout le monde ;)
        2. Si tu ne veux pas que le script php s'execute si il y a une vérification Js il te faut rajouter return false; a la fin de ton script js . (A moins que ce ne soit return true; a tester) .

          En esperant t'avoir aidé !
          1. Contributeur
            Ne serait-ce pas une meilleure idée d'utiliser un champ caché sur le formulaire qui sera affecté par le JS. Du côté PHP tu vérifies la valeur de ce champ et si il est vide tu renvoies un message demandant à l'utilisateur d'activer Javascript.