Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
809 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  [PHP] Validation d'un champs date

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[PHP] Validation d'un champs date

n°448986
burgergold
5$? va chez l'diable!
Posté le 04-07-2003 à 18:35:38  profilanswer
 

J'ai un champs date qui a le format suivant: AAAA-MM-JJ HH:MM:SS
 
j'aimerais bien valider, lors du submit, que le champs respecte bien ses critères
 
je mets fait seulement une validation que sur ####-##-## ##:##:## ou si ya moyen que je pousse pour que MM soit de 1-12, JJ de 1-31(voir meme selon le mois), que HH soit de 0-23, MM 0-59, SS 0-59?
 
EDIT
 
La solution
 

Code :
  1. if (! ereg('^[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}$', $_POST['body_date']))
  2.       {
  3.          $error_msg = "Le format de la date est incorrect";
  4.       }
  5.       elseif ($_POST['body_date'] != Date("Y-m-d H:i:s", mktime(substr($_POST['body_date'], 11, 2), substr($_POST['body_date'], 14, 2), substr($_POST['body_date'], 17, 2), substr($_POST['body_date'], 5, 2), substr($_POST['body_date'], 8, 2), substr($_POST['body_date'], 0, 4))))
  6.       {
  7.          $error_msg = "La date entrée n'existe pas";
  8.       }


 
ma date étant dans la variable $_POST['body_date'] étant sous un format AAAA-MM-JJ HH:MM:SS


Message édité par burgergold le 04-07-2003 à 19:32:26
mood
Publicité
Posté le 04-07-2003 à 18:35:38  profilanswer
 

n°448993
ratibus
Posté le 04-07-2003 à 18:43:26  profilanswer
 

salut
 
tout d'abord avec une expression régulière tu peux vérifier que ta date est de la forme ####-##-## ##:##:## et récupérer les valeurs de chaque partie
 
puis tu peux utiliser la fonction mktime (http://fr2.php.net/manual/fr/function.mktime.php)
 
avec cette fonction tu peux faire une validation en essayant de créer la date correspondant aux paramètres issus de l'expression régulière et regarder si la sortie de cette fonction correspond à la même date (je suis pas sur d'etre très clair là  :D )

n°448995
burgergold
5$? va chez l'diable!
Posté le 04-07-2003 à 18:45:13  profilanswer
 

mouep jai plutot bien compris, je valide le format, ensuite je valide les valeurs avec mktime
 
jvais tenter le coup :D

n°448997
ratibus
Posté le 04-07-2003 à 18:47:00  profilanswer
 

tiens moi au courant (mets ton code qd il marche pour que ça puisse servir éventuellement à d'autre)  :)

n°448999
burgergold
5$? va chez l'diable!
Posté le 04-07-2003 à 18:48:25  profilanswer
 

comment jfais ca un espace dans un ereg? juste un espace ou \ espace?

n°449000
ratibus
Posté le 04-07-2003 à 18:51:17  profilanswer
 

juste espace

n°449004
burgergold
5$? va chez l'diable!
Posté le 04-07-2003 à 18:55:54  profilanswer
 

Code :
  1. ereg('^([0-9]{4})-([0-9]{2})-([0-9]{2}) ([0-9]{2}):([0-9]{2}):([0-9]{2})$', $_POST['body_date'])


 
et de une partie fonctionnel

n°449019
burgergold
5$? va chez l'diable!
Posté le 04-07-2003 à 19:32:58  profilanswer
 

solution au premier post

n°449382
ratibus
Posté le 05-07-2003 à 12:18:46  profilanswer
 

burgergold a écrit :


La solution 2 le retour  :D
 

Code :
  1. if (! ereg('^([0-9]{4})-([0-9]{2})-([0-9]{2}) ([0-9]{2}):([0-9]{2}):([0-9]{2})$', $_POST['body_date'], $regs))
  2.       {
  3.          $error_msg = "Le format de la date est incorrect";
  4.       }
  5.       elseif ($_POST['body_date'] != Date("Y-m-d H:i:s", mktime($regs[1], $regs[2], $regs[3], $regs[4], $regs[5], $regs[6])))
  6.       {
  7.          $error_msg = "La date entrée n'existe pas";
  8.       }


 
la date étant dans la variable $_POST['body_date'] étant sous un format AAAA-MM-JJ HH:MM:SS  


 
En effet un des intérets des expressions regulières étant de pouvoir récupérer des parties de l'expression que tu mets entre parenthèse dans ton expression regulière


Message édité par ratibus le 05-07-2003 à 12:19:58
n°449411
burgergold
5$? va chez l'diable!
Posté le 05-07-2003 à 15:00:53  profilanswer
 

:jap:  
 
plutot bien comme truc :D mais ainsi pour que ca fonctionne avec mktime
 

Code :
  1. if (! ereg('^([0-9]{4})-([0-9]{2})-([0-9]{2}) ([0-9]{2}):([0-9]{2}):([0-9]{2})$', $_POST['body_date'], $regs))
  2.       {
  3.          $error_msg = "Le format de la date est incorrect";
  4.       }
  5.       elseif ($_POST['body_date'] != Date("Y-m-d H:i:s", mktime($regs[4], $regs[5], $regs[6], $regs[2], $regs[3], $regs[1])))
  6.       {
  7.          $error_msg = "La date entrée n'existe pas";
  8.       }

mood
Publicité
Posté le 05-07-2003 à 15:00:53  profilanswer
 

n°449416
ratibus
Posté le 05-07-2003 à 15:19:52  profilanswer
 

oups désolé je me suis trompé dans l'ordre des arguments  :jap:  


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  [PHP] Validation d'un champs date

 

Sujets relatifs
PHP 5 bientot !!!applets, champs de saisie, etc
[ PHP / WML ] Comment lier les deux ? +UPDATE : pb .htaccessobjet COM word.application en Php
Utiliser un proxy en PHPRemplire un formulaire PHP sous Delphi
[PHP] Mettre un argument à un fichier en "include"[PHP MySQL] BDD gérée en live......(jsuis novice)
Question sur les expressions régulières en PHPPHP en ligne de commande et appel de scripts
Plus de sujets relatifs à : [PHP] Validation d'un champs date


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR