Controle de saisie d'une date ?

Résolu/Fermé
trik59 Messages postés 241 Date d'inscription mardi 9 décembre 2003 Statut Membre Dernière intervention 17 mai 2012 - 3 févr. 2005 à 09:51
Donahu Messages postés 8 Date d'inscription jeudi 17 juin 2010 Statut Membre Dernière intervention 7 octobre 2011 - 17 juin 2010 à 10:51
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...

7 réponses

Donahu Messages postés 8 Date d'inscription jeudi 17 juin 2010 Statut Membre Dernière intervention 7 octobre 2011 35
17 juin 2010 à 10:51
Yo les gars, bienvenu en 2010 ! Enfin en 2003 même.

function verifierDate($month, $day, $year) {
if (checkdate($month, $day, $year) == true)
{ return "Date valide calendrier grégorien."; }
else
{ return "C'est quoi ce truc qui est pas une date !?"; }
}

echo verifierDate(02, 31, 2010)."<br>";
echo verifierDate(3, 5, 2009)."<br>";



Donc un date du style 31 février ne passera pas par exemple :) !
11
GallyNet Messages postés 434 Date d'inscription mardi 1 juin 2004 Statut Membre Dernière intervention 15 décembre 2008 387
3 févr. 2005 à 21:30
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
3
Alternate Messages postés 278 Date d'inscription mercredi 16 avril 2008 Statut Membre Dernière intervention 2 avril 2010 157
14 oct. 2009 à 11:17
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;
	}
}
3
trik59 Messages postés 241 Date d'inscription mardi 9 décembre 2003 Statut Membre Dernière intervention 17 mai 2012 39
3 févr. 2005 à 09:52
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...
2

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
trik59 Messages postés 241 Date d'inscription mardi 9 décembre 2003 Statut Membre Dernière intervention 17 mai 2012 39
3 févr. 2005 à 09:53
pardon la variable c'est pas $dlivr mais $date


:)

Si le jour sert à voir, il sert aussi a etre vue...
1
je souhaite connaître comment tester les valeurs de $regs
1
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 !"
}
0
Alternate Messages postés 278 Date d'inscription mercredi 16 avril 2008 Statut Membre Dernière intervention 2 avril 2010 157
25 juin 2008 à 18:29
j'ai essayé la check date mais elle ne marche pas. je met bien les paramètres trouvé ici : https://www.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;
	}
}
1
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
0