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:m: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 # :

Code : Tout sélectionner

"#^[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}+$#"
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 Image 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 !!! ;)