Vérifier un formulaire date avec if

Fermé
xunil2003 Messages postés 761 Date d'inscription mercredi 17 novembre 2004 Statut Membre Dernière intervention 24 mars 2024 - Modifié par xunil2003 le 10/07/2012 à 17:55
xunil2003 Messages postés 761 Date d'inscription mercredi 17 novembre 2004 Statut Membre Dernière intervention 24 mars 2024 - 11 juil. 2012 à 21:20
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

Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
10 juil. 2012 à 18:24
<?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 761 Date d'inscription mercredi 17 novembre 2004 Statut Membre Dernière intervention 24 mars 2024 14
Modifié par xunil2003 le 10/07/2012 à 18:48
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 dimanche 1 juillet 2012 Statut Membre Dernière intervention 14 décembre 2012 208
10 juil. 2012 à 18:48
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 761 Date d'inscription mercredi 17 novembre 2004 Statut Membre Dernière intervention 24 mars 2024 14
10 juil. 2012 à 18:56
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 761 Date d'inscription mercredi 17 novembre 2004 Statut Membre Dernière intervention 24 mars 2024 14
Modifié par xunil2003 le 11/07/2012 à 16:19
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 1682 Date d'inscription mardi 12 juillet 2011 Statut Membre Dernière intervention 20 juillet 2012 316
Modifié par vordano le 11/07/2012 à 17:14
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 761 Date d'inscription mercredi 17 novembre 2004 Statut Membre Dernière intervention 24 mars 2024 14
11 juil. 2012 à 17:22
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 1682 Date d'inscription mardi 12 juillet 2011 Statut Membre Dernière intervention 20 juillet 2012 316
Modifié par vordano le 11/07/2012 à 17:43
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 761 Date d'inscription mercredi 17 novembre 2004 Statut Membre Dernière intervention 24 mars 2024 14
Modifié par xunil2003 le 11/07/2012 à 18:33
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 761 Date d'inscription mercredi 17 novembre 2004 Statut Membre Dernière intervention 24 mars 2024 14
11 juil. 2012 à 21:20
Bonsoir,

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

Merci.
0