Vérifier un formulaire date avec if

Bonjour,
Dans mon formulaire je n'arrive pas a faire la vérification pour l'année de naissance.
1/ vérifier que le chiffre est supérieur a 1900
2/ vérifier que le chiffre est inférieur a 2020
3/ Vérifier que le champ est vide.

ou est mon erreur ?

if ($_POST['annee_de_naissance']>1900){    
echo "<p align='center' style='color:green;'>"."<strong>L'année de naissance est doit être un chiffre supérieur à 1900</strong>"."</p>";    

}elseif ($_POST['annee_de_naissance']<2020){    
echo "<p align='center' style='color:red;'>"."<strong>L'année de naissance doit être un chiffre entre 1900 et ".$anne_en_cours." !</strong>"."</p>";    

}else ($_POST['annee_de_naissance']){    
echo "<p align='center' style='color:red;'>"."<strong>Le champ année de naissance est vide !</strong>"."</p>";


Merci.

9 réponses

  1. <?php
    if(empty($_POST['annee_de_naissance'])){
    	echo "<p align='center' style='color:red;'>"."<strong>Le champ année de naissance est vide !</strong>"."</p>";
    }elseif($_POST['annee_de_naissance'] < 1900){
    	echo "<p align='center' style='color:green;'>"."<strong>L'année de naissance est doit être un chiffre supérieur à 1900</strong>"."</p>";    
    }elseif ($_POST['annee_de_naissance'] > $anne_en_cours){    
    	echo "<p align='center' style='color:red;'>"."<strong>L'année de naissance doit être un chiffre entre 1900 et ".$anne_en_cours." !</strong>"."</p>";    
    
    }
    
    
    
    // else ($_POST['annee_de_naissance']){    //la ça ne correspond à rien ?
    // et tes tests < > étaient inversés
    0
    1. Bonsoir,

      Quand je tape 1850 ou 2050 ou 1951, il me répond : Le champ année de naissance est vide !.
      quand le chanp n'est pas rempli , il me répond bien : Le champ année de naissance est vide !.

      if(empty($_POST['annee_de_naissance'])){ 
       echo "<p align='center' style='color:red;'>"."<strong>Le champ année de naissance est vide !</strong>"."</p>"; 
      }elseif($_POST['annee_de_naissance'] < 1900){ 
       echo "<p align='center' style='color:green;'>"."<strong>L'année de naissance est doit être un chiffre supérieur à 1900</strong>"."</p>";     
      }elseif ($_POST['annee_de_naissance'] > $anne_en_cours){     
       echo "<p align='center' style='color:red;'>"."<strong>L'année de naissance doit être un chiffre entre 1900 et ".$anne_en_cours." !</strong>"."</p>";     
      
      }


      Merci.
      0
      1. Essayer de placer vos trois condition dans des if, je sais c est pas tres recommander mais juste pour voir
        0
        1. Bonsoir,

          c'est bon, j'ai oublié un e a année
          ca marche

          Merci.
          0
          1. Bonjour,

            En récupérant la variable dans le formulaire, je n'ai aucune réponse.
            L'echo affiche correctement la valeur.
            Es-ce correct ?

            $JOUR_DE_NAISSANCE = $_POST['jour_de_naissance'];  
            echo $JOUR_DE_NAISSANCE ; 
            
            if($JOUR_DE_NAISSANCE){ 
             echo "<p align='center' style='color:green;'>"."<strong>Le champ jour de naissance est vide !</strong>"."</p>"; 
            }elseif($JOUR_DE_NAISSANCE < 1){ 
            echo "<p align='center' style='color:red;'>"."<strong>Le jour_de_naissance doit être un chiffre entre 01 et 31</strong>"."</p>";     
                 echo '<br/>'; 
                 echo '<div align="center"><input type="button" value="Retour" onclick="javascript:history.back()">'; 
            }elseif ($JOUR_DE_NAISSANCE > 31){     
            echo "<p align='center' style='color:red;'>"."<strong>Le jour de naissance doit être un chiffre entre 01 et 31 !</strong>"."</p>";   
                 echo '<br/>'; 
                 echo '<div align="center"><input type="button" value="Retour" onclick="javascript:history.back()">'; 
            } 
            


            Merci.
            0
            1. j'ai plus simple pour toi :)
              et ça gère les année bisextile
              if(!checkdate($_POST['mois_de_naissance'],$_POST['jour_de_naissance'],$_POST['annee_de_naissance']){ 
              echo 'date de naissance non valide'; 
              } 
              


              c'est pas la peine de te fatiguer à écrire 20 lignes de code alors que l'utilisateur ne l'utiliseras que 5 secondes ;) (en plus si un utilisateur est né avant 1900 souhaite utiliser ton site, tu l'empeche de venir :( )
              0
              1. Bonjour

                C'est pas bon car si l'utilisateur fait une erreur de frappe dans l'un des champs

                jour_de_naissance
                mois_de_naissance
                annee_de_naissance


                je me retrouve avec une lettre L par exemple, de plus si il il entre 33 dans le mois sa va pas, et pour l'année si il tape 1850 aucune alerte.

                Merci
                0
                1. pour l'année, tu ne peux pas empécher l'utilisateur de mettre une année fausse. donc que ce soit 1840 ou 1900, où est le problème ?

                  et pour la lettre, tu peux utiliser la fonction isNumeric()
                  de plus pour le mois 33, ca marche parfaitement
                  0
              2. Bonjour,

                Pour l'année oui avec ceci :
                if(empty($_POST['annee_de_naissance'])){  
                 //echo "<p align='center' style='color:green;'>"."<strong>Le champ année de naissance est vide !</strong>"."</p>";  
                }elseif($_POST['annee_de_naissance'] < 1900){  
                 echo "<p align='center' style='color:red;'>"."<strong>L'année de naissance est doit être un chiffre supérieur à 1900</strong>"."</p>";      
                }elseif ($_POST['annee_de_naissance'] > $annee_en_cours){      
                 echo "<p align='center' style='color:red;'>"."<strong>L'année de naissance doit être un chiffre entre 1900 et ".$annee_en_cours." !</strong>"."</p>"; 


                J'ai un autre problème quand je tape de le champ email, l'adresse email "cvb@free.fr" il me répond "L'adresse électronique saisie est invalide !" alors que si je tape "free2003@free.fr" elle passe ??

                 $valid_email = "#^[^-_\.][a-z0-9-_\.]+[^-_\.]@[^-_\.][a-z0-9-_\.]+[^-_\.]\.[a-z]{2,4}$#";  
                        if(($EMAIL) && !(preg_match($valid_email, $EMAIL))) /* Si il y a une adresse inscrite mais invalide */  
                                  /* Si le champ "adresse électronique" est vide, */  
                    echo "<p align='center' style='color:red;'>"."<strong>Le champs valide email est vide !</strong>"."</p>";  
                                  {  
                                  /* On vérifie LES DEUX conditions réunies (avec le sugne "&&"): si on ne vérifie que la validité, en ne  
                                  mettant pas d'adresse dans le formulaire, on obtient l'affichage des deux messages, or l'adresse à  
                                  ce moment là n'est pas invalide, elle est absente: le message d'invalidité ne s'applique donc pas. */  
                                  echo "<p align='center' style='color:red;'>"."<strong>L'adresse électronique saisie est invalide !</strong>"."</p>";  
                    }


                Merci.
                0
                1. Bonsoir,

                  J'ai tout résolu, tout est ok.

                  Merci.
                  0