Page 1 sur 1
Vérifier format date et heure.
Posté : 02 nov. 2008, 17:17
par hub73
Bonjour,
J'ai lu tout un tas de tutoriels au sujet de la date, mais je ne trouve pas ceci :
Je veux que l'utilisateur rentre une date au format mysql dans le champ de mon formulaire.
par exemple : 2008-11-02 16:09
Je veux juste vérifier que cette date est correcte et que l'utilisateur respecte bien le format :
aaaa-mm-jj hh:mm
Merci de votre aide !
Bonne journée.
Posté : 02 nov. 2008, 21:09
par Ryle
Pour respecter un masque de saisie, rien ne vaut les expressions régulières
Regarde du côté de preg_match()

Posté : 02 nov. 2008, 21:55
par Invité
Ok merci, j'ai retrouvé un bouquin qui traite de çà, je vais essayer.
Posté : 02 nov. 2008, 22:12
par hub73
J'ai testé çà mais ca marche pas :
function Valider_date ($Chaine)
{
if (eregi("^[0-9]{4}-[0-9]{1}-[0-9]{1} [0-9]{1}:[0-9]{1}:[0-9]{1}+$", $Chaine) == true)
{
if (checkdate ($Chaine) == true)
{
return true;
}
else
(
return false;
}
}
else
{
return false;
}
}
[/php]
pour verifier aaaa-mm-jj hh:mm:ss
2008-07-09 16:41:00
Merci de votre aide.
Posté : 03 nov. 2008, 01:06
par Ryle
Entre accolades tu indiques le nombre d'occurences :
[0-9]{4} : indique un caractère de 0 à 9, présent 4 fois
[0-9]{1} : indique un caractère de 0 à 9, présent une seule fois
En gros, pour le moment tu testes ce masque : "aaaa-m-j h

s"

Posté : 03 nov. 2008, 08:54
par hub73
Ok merci, sinon la syntaxe est bonne parce que je recois un message d'erreur de la fonction ?
Posté : 03 nov. 2008, 08:58
par Invité
function Valider_date ($Chaine)
{
if (preg_match("^[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}+$", $Chaine))
{
if (checkdate ($Chaine) == true)
{
return true;
}
else
{
return false;
}
}
else
{
return false;
}
}
Erreur : No ending delimiter '^' found
Posté : 03 nov. 2008, 14:50
par hub73
Bon j'ai beau y travailler je ne vois pas ou est l'erreur dans l'expression régulière. Au secours !
Posté : 03 nov. 2008, 15:10
par Berzemus
Les expressions régulières, sous php, demandent un caractère pour délimiter le début et la fin de la chaine. Peu importe lequel, tant qu'il soit échappé à l'intérieur de l'expression. D'habitude, on utilise # :
Mais personnellement j'utilise plutôt le |, mais bon, c'est accessoirement un opérateur logique (ou) dans les expressions régulières, donc je ne le conseillerais pas.
Posté : 03 nov. 2008, 15:12
par Truc
Il te manque ces fameux délimiteurs, regarde la doc de preg_match().... souvent utilisé / ou #
Pour tester tes
expression régulières
Le dernier "+" ne sert à rien

Posté : 03 nov. 2008, 21:30
par hub73
Merci beaucoup pour votre aide, je comprends mieux maintenant. La fonction checkdate renvoi un message d'erreur mais c'est tout à fait normal. Encore une fois merci !
Posté : 04 nov. 2008, 10:57
par Truc
Modération :
Puisque ta question est résolue, j'ajoute le tag [Résolu]
pour indiquer aux personnes qui voudront consulter ce sujet qu'il contient une solution.
Tu peux réaliser cette opération toi-même
en cliquant sur le bouton
qui s'affiche en haut à gauche de ce sujet
si tu as posté le 1er message en tant que membre (inscrit et identifié).
Alors... inscris-toi !!! 