Vérifier un formulaire date avec if

xunil2003 Messages postés 765 Date d'inscription   Statut Membre Dernière intervention   -  
xunil2003 Messages postés 765 Date d'inscription   Statut Membre Dernière intervention   -
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.
A voir également:

9 réponses

Alain_42 Messages postés 5361 Date d'inscription   Statut Membre Dernière intervention   894
 
<?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
xunil2003 Messages postés 765 Date d'inscription   Statut Membre Dernière intervention   14
 
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
@lobotomix:~# rm -rf *\ Messages postés 1392 Date d'inscription   Statut Membre Dernière intervention   208
 
Essayer de placer vos trois condition dans des if, je sais c est pas tres recommander mais juste pour voir
0
xunil2003 Messages postés 765 Date d'inscription   Statut Membre Dernière intervention   14
 
Bonsoir,

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

Merci.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
xunil2003 Messages postés 765 Date d'inscription   Statut Membre Dernière intervention   14
 
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
vordano Messages postés 1685 Date d'inscription   Statut Membre Dernière intervention   316
 
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
xunil2003 Messages postés 765 Date d'inscription   Statut Membre Dernière intervention   14
 
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
vordano Messages postés 1685 Date d'inscription   Statut Membre Dernière intervention   316
 
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
xunil2003 Messages postés 765 Date d'inscription   Statut Membre Dernière intervention   14
 
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
xunil2003 Messages postés 765 Date d'inscription   Statut Membre Dernière intervention   14
 
Bonsoir,

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

Merci.
0