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 :
Formulaires en ligne - Les champs de saisie VoirQuelles données saisir ? Comment dois-je saisir l'information L'organisation des champs de saisie Séparer les champs de saisie L'organisation des champs et des titres La longueur des champs Quelles données saisir ? Sur la plupart des...
Accélérer les accès disque (désactiver la date de dernier accès) VoirLa plupart des systèmes d'exploitation actuels utilisent des systèmes de fichiers avec des fonctions avancées : gestion des droits, journalisation... Entre autres, NTFS (Windows) et ext3 (Linux) sont capables d'enregistrer la date de dernier accès à...
Oracle - Les fichiers d'une base Oracle VoirLes fichiers physiques d'une base Oracle Les fichiers physiques d'une base Oracle permettent de stocker de manière persistante les données manipulées par Oracle, tandis que la mémoire sert à optimiser la vitesse de fonctionnement de la base de...
Tableur - La saisie de données VoirSAISIE DE DONNEES LITTERALES Vous êtes prêt à entrer des données dans votre feuille de calcul. Nous vous déconseillons toutefois de le faire avant d’avoir réfléchi soigneusement à ce que vous voulez obtenir : de façon générale, mieux vaut bâtir sur...

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