Controle de saisie d'une date ?
Résolu
trik59
Messages postés
244
Statut
Membre
-
Donahu Messages postés 10 Statut Membre -
Donahu Messages postés 10 Statut Membre -
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...
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...
A voir également:
- Algorithme date valide
- Ethernet n'a pas de configuration ip valide - Guide
- Url valide - Guide
- Trouver une date de naissance gratuit - Forum Webmastering
- Logiciel algorithme euromillion - Télécharger - Loisirs créatifs
- Le nom du champ de tableau croisé dynamique n'est pas valide ✓ - Forum Excel
7 réponses
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 :) !
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 :) !
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()
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
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
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
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˚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;
}
}
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...
if (validation_date($dlivr) == false){
$err=1;
$lerr=$lerr."Date non Valide. \\n";
Si le jour sert à voir, il sert aussi a etre vue...
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
pardon la variable c'est pas $dlivr mais $date
:)
Si le jour sert à voir, il sert aussi a etre vue...
:)
Si le jour sert à voir, il sert aussi a etre vue...
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 :
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 :
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;
}
}
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
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