Rechercher : dans
Par :

Controle de saisie d'une date ?

Dernière réponse le 14 oct 2009 à 11:17:14 trik59, le 3 fév 2005 à 09:51:26 
 Signaler ce message aux modérateurs

Bonjour, voila j'ai un formulaire html et je programme en php
en fait j'ai une date limite (de nom de variable "date")


la chose que n'arrive pa a faire ou trouver c'est comment je peut faire pour controler la date, au cas apar ex: ou l'utilisateur saisie une date eroné ex 11/11/1111 ou voir s'il ne saisie rien:

moi j'ai reussi a trouver cmt affiché le message mais je n'arive plu apres!

je fait appel a votre aide svp
merci d'avabce !




Si le jour sert à voir, il sert aussi a etre vue...

Meilleures réponses pour « Controle de saisie d'une date ? » dans :
Javascript - L'objet Date VoirLes particularités de l'objet Date L'objet Date permet de travailler avec toutes les variables qui concernent les dates et la gestion du temps. Il s'agit d'un objet inclus de façon native dans Javascript, et que l'on peut toujours utiliser. La...
Fichier DAT VoirFormat DAT Un fichier DAT Un fichier .dat est un fichier de données (.DAT signifie data). En général, il s'agit d'un fichier binaire, créé par un programme et utilisable uniquement par ce programme, ce qui signifie qu'il n'est pas censé être ouvert...

1

trik59, le 3 fév 2005 à 09:52:07
  • +2

Voila ske j'ai fait :



if (validation_date($dlivr) == false){
$err=1;
$lerr=$lerr."Date non Valide. \\n";




Si le jour sert à voir, il sert aussi a etre vue...

Répondre à trik59

2

trik59, le 3 fév 2005 à 09:53:34
  • +1

Pardon la variable c'est pas $dlivr mais $date


:)

Si le jour sert à voir, il sert aussi a etre vue...

Répondre à trik59

3

GallyNet, le 3 fév 2005 à 21:30:54
  • +3

Tu peut déjà tester si le texte fournir est bien dans la forme voulu (pour ne pas avoir 2005-02-03 alors que tu veut 03/02/2005) avec la fonction ereg()

if(ereg('([0-9]{2})/([0-9]{2})/([0-9]{4})',$date,$regs)){
  //La date est correct
} else {
  //la date est incorrect
}


Après tu peut tester indépandemment les valeur de la date, car elles sont dans la variables $regs:
$regs[1] => le jour
$regs[2] => le mois
$regs[3] => l'année

Répondre à GallyNet

4

pascal, le 5 sep 2007 à 15:50:22

Je souhaite connaître comment tester les valeurs de $regs

Répondre à pascal

5

smdl, le 13 mar 2008 à 23:51:27

Tu peux utiliser la fonction checkdate à laquelle tu vas passer les postes du tableau $regs :
Par exemple :

if (!checkdate($regs[2],$regs[3],$regs[1])) {
//Le texte de la fonction qui gère l'erreur de date. Par exemple :
echo "<b>$regs[0]</b> n'est pas une date valide !"
}

Répondre à smdl

6

Alternate, le 25 jun 2008 à 18:29:35

J'ai essayé la check date mais elle ne marche pas. je met bien les paramètres trouvé ici : http://fr.php.net/manual/fr/function.checkdate.php soit :

bool checkdate  ( int $month  , int $day  , int $year  )


par contre j'ai refais une fonction qui fonctionne très bien pour toutes les dates de l'année et gère l'année bixetil ainsi que les fin de moi à 30 ou 31 jours :

function verifdate($date)
{
	$tab = explode('/', $trad, 3);
	$tmp=false;

	if(($tab[2] >= 1) && ($tab[2] <= 32767)) {
		$tmp = true;
	} else {
		$tmp = false;
		return true;
	}

	switch ($tab[1])
	{
		case (1) :
		case (3) :
		case (5) :
		case (7) :
		case (8) :
		case (10) :
		case (12) :
			if(($tab[0] >= 1) && ($tab[0] <= 31)) {
				$tmp = true;
			} else {
				$tmp = false;
				return $tmp;
			}
			break;
		case (4) :
		case (6) :
		case (9) :
		case (11) :
			if(($tab[0] >= 1) && ($tab[0] <= 30)) {
				$tmp = true;
			} else {
				$tmp = false;
				return $tmp;
			}
			break;
		case 2 :
			if($tab[2]%4 == 0){
				if(($tab[0] >= 1) && ($tab[0] <= 29)) {	
					$tmp = true;	
				} else {
					$tmp = false;
					return $tmp;
				}
			} else {
				if(($tab[0] >= 1) && ($tab[0] <= 28)) {
					$tmp = true;
				} else {
					$tmp = false;
					return $tmp;
				}
			}
			break;
		default :
			$tmp = false;
			return $tmp;
			break;
	}
	
	if ($tmp) {
		return true;
	} else {
		return false;
	}
}

Répondre à Alternate

7

9 mm, le 14 oct 2009 à 10:46:17

J'ai essayer ta fonction( qui se trouve dans le dernier message) mais j'ai eu des erreurs les voici:

Notice: Undefined variable: trad in /opt/lampp/htdocs/conceptionqcm/admin/sizou.php on line 7

Notice: Undefined offset: 2 in /opt/lampp/htdocs/conceptionqcm/admin/sizou.php on line 10

je constate qu'il y a des variables non déclarées
Tu peut me dire à quoi correspond ces variables
De plus ta fonction ne contient qu'un paramètre
vraiment bizare quand tu dis que ça marche

Répondre à 9 mm

8

 Alternate, le 14 oct 2009 à 11:17:14

J'avais adapté ma fonction à ta question et j'avais enlevé le début car il ne me semblait pas utile.
Cette fonction accepte les date au format : JJ/MM/AAAA ou AAAA-MM-JJ pour les dates anglaises

// vérifie si la date est correcte. 
function verifdate($date)
{
	$tmp=false;
	// cas de la date vide 
	if($date == '') return $tmp;
	// choix du traitement de la date suivant son format
	// 2 possibilité pour le format : AAAA-MM-JJ ou JJ/MM/AAAA
	$tab = explode('-', $date, 3);
	// 1ère possibilité : on vérifie s'il y a des tirets dans la date.
	if((!isset($tab[1])) && (!isset($tab[2]))) {
		$trad = $date;
	} else {
	// la seconde : il s'agit d'un date au format fr.
		$trad = $tab[2].'/'.$tab[1].'/'.$tab[0];
	}
	// séparation des jours, mois et année pour la vérification de la date
	$tab = explode('/', $trad, 3);
	// on traite l'annÈe qui doit Ítre contenu dans un entier simple,
	// il n'y a pas de chiffre nÈgatif.
	if((!isset($tab[1])) || (!isset($tab[2]))) return $tmp;
	if(($tab[2] >= 1) && ($tab[2] <= 32767)) {
		$tmp = true;
	} else {
		$tmp = false;
		return $tmp;
	}
	// en fonction du mois on dÈtermine si le nombre de jour est correct.
	switch ($tab[1])
	{
		case (1) :		// janvier
		case (3) :		// mars
		case (5) :		// mai
		case (7) :		// juillet
		case (8) :		// ao&#730;t
		case (10) :		// octobre
		case (12) :		// dÈcembre
			// ces 7 mois ont 31 jours
			if(($tab[0] >= 1) && ($tab[0] <= 31)) {
				$tmp = true;		// le numÈro du jour est contenu entre 1 et 31
			} else {
				$tmp = false;		// le numÈro du jour n'est pas contenu entre 1 et 31
				return $tmp;		// renvoie de la valeur 'faux', il n'est pas nÈcÈssaire de continuer les tests
			}
			break;
		case (4) :		// avril
		case (6) :		// juin
		case (9) :		//  septembre
		case (11) :		// novembre
			// ces 4 mois ont 30 jours
			if(($tab[0] >= 1) && ($tab[0] <= 30)) {
				$tmp = true;		// le numÈro du jour est contenu entre 1 et 30
			} else {
				$tmp = false;		// le numÈro du jour n'est pas contenu entre 1 et 30
				return $tmp;		// renvoie de la valeur 'faux', il n'est pas nÈcÈssaire de continuer les tests
			}
			break;
		case 2 :		// fÈvrier
			if($tab[2]%4 == 0){		// On regarde s'il s'agit d'une annÈe bixetile ou non en regardant le modulo de la division du nombre d'annÈe par 4
				if(($tab[0] >= 1) && ($tab[0] <= 29)) {		// 
					$tmp = true;	
				} else {
					$tmp = false;
					return $tmp;
				}
			} else {
				if(($tab[0] >= 1) && ($tab[0] <= 28)) {
					$tmp = true;
				} else {
					$tmp = false;
					return $tmp;
				}
			}
			break;
		default :
			$tmp = false;
			return $tmp;
			break;
	}
	
	if ($tmp) {
		return true;
	} else {
		return false;
	}
}
Si c'est résolu, pensez à mettre résolu

Répondre à Alternate