Page 1 sur 1

Gérer des dates insérer par un utilisateur

Posté : 23 mai 2008, 11:45
par fowndi
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 ??

Posté : 23 mai 2008, 12:50
par guilt92
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.

oui mais

Posté : 23 mai 2008, 13:19
par fowndi
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

Posté : 23 mai 2008, 13:21
par guilt92
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.

Posté : 23 mai 2008, 13:35
par d0m
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.

Posté : 23 mai 2008, 14:14
par steph29
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

Posté : 23 mai 2008, 14:44
par Ryle
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é.