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. Bonsoir,

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

    Merci.
    0
    1. 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. 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. 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,

          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. Bonsoir,

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

            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,

                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. <?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