Vérifier format date et heure.

hub73
Invité n'ayant pas de compte PHPfrance

02 nov. 2008, 17:17

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.

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

02 nov. 2008, 21:09

Pour respecter un masque de saisie, rien ne vaut les expressions régulières :)

Regarde du côté de preg_match() :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Invité
Invité n'ayant pas de compte PHPfrance

02 nov. 2008, 21:55

Ok merci, j'ai retrouvé un bouquin qui traite de çà, je vais essayer.

hub73
Invité n'ayant pas de compte PHPfrance

02 nov. 2008, 22:12

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.

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

03 nov. 2008, 01:06

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" :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

hub73
Invité n'ayant pas de compte PHPfrance

03 nov. 2008, 08:54

Ok merci, sinon la syntaxe est bonne parce que je recois un message d'erreur de la fonction ?

Invité
Invité n'ayant pas de compte PHPfrance

03 nov. 2008, 08:58

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

hub73
Invité n'ayant pas de compte PHPfrance

03 nov. 2008, 14:50

Bon j'ai beau y travailler je ne vois pas ou est l'erreur dans l'expression régulière. Au secours !

ViPHP
ViPHP | 4039 Messages

03 nov. 2008, 15:10

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.
Modifié en dernier par Berzemus le 03 nov. 2008, 15:12, modifié 1 fois.
Mais qu'importe. (je suis ici - dernier petit projet)
Berze going social.

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

03 nov. 2008, 15:12

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 ;-)

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

hub73
Invité n'ayant pas de compte PHPfrance

03 nov. 2008, 21:30

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 !

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

04 nov. 2008, 10:57

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 !!! ;)

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute