Gérer des dates insérer par un utilisateur

Eléphant du PHP | 50 Messages

23 mai 2008, 11:45

salut chers amis,
Je désire controler les données entrer dans un champ d'un formulaire avant de les insérer dans une bases, ses données sont une date de la forme XX/XX/XXXX, comment puis je proceder ??

Mammouth du PHP | 1353 Messages

23 mai 2008, 12:50

Ca dépend ce que tu veux dire par "contrôler", mais tu as la fonction date() et mktime() de php qui peuvent t'aider.
Tell me and I forget. Teach me and I remember. Involve me and I learn.

Eléphant du PHP | 50 Messages

23 mai 2008, 13:19

c'est vrai, mais le fait est que c'est l'utilisateur qui doit entrer la date et je veus pouvoir vérifier que la date est entrer selon les normes, pour moi il faut que cette date soit de la forme xx/xx/xxxx Ex: 23/05/2008

Mammouth du PHP | 1353 Messages

23 mai 2008, 13:21

Tu peux faire 3 champs différents (jour, mois, année) et ca devient plus facile à controller. Sinon comme je te l'ai dit tu peux récupérer la valeur postée dans ce champs et la traiter avec la fonction date() et mktime() et voir si cette date existe.
Tell me and I forget. Teach me and I remember. Involve me and I learn.

d0m
Mammouth du PHP | 1141 Messages

23 mai 2008, 13:35

pour controler le plus possible, tu peux:
- insérer un calendrier avec les dates cliquables
ou
- faire 3 listes déroulantes : jour, mois et année

De ce manières impossible d'entrer autre chose que des chiffres.

Dans le cas des listes, il reste toujours la possibilité de choisir une date inexistante ou future. Pour remédier à ça tu peux controler en php comme l'a dit guilt92 et un controle javascript coté client.

Eléphant du PHP | 175 Messages

23 mai 2008, 14:14

le fait de proposer un calendrier n'est pas un moyen de controle...
le plus simple est de verifier le motif...
//xx/xx/xxxx
if (preg_match("/^d{2}\/d{2}\/d{4}$/",$ta_variable_a _verifier){
     echo "date_valide";
}
else echo "date_invalide";
traduction du motif:

Code : Tout sélectionner

^d{2}\/d{2}\/d{4}$
commence par 2 chiffre suivi d'un / de 2 nombre, d'un / et finissant par 4 chiffres

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

23 mai 2008, 14:44

Une série de liste déroulante ou un calendrier apporte un contrôle extrêmement léger lors de la saisie mais ne garantissent en rien le format des données, pas plus que la validité de la date lorsqu'elle est reçue par php.
Les contrôles en javascript ne servent qu'au confort utilisateur en lui faisant remarquer immédiatement une erreur de saisie, mais ne doivent en rien être considérés comme fiable ou suffisant.

Si tu veux t'assurer du format, une expression régulière fait effectivement l'affaire. Si c'est la date que tu veux contrôler (pour éviter d'avoir des 31 février) il te faut construire un objet date en php avec mktime() (en lui passant les année, mois et jour saisi par l'utilisateur) et en vérifier que le résultat obtenu est identique à celui spécifié.
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...