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
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
A voir également:
- Algorithme date valide
- Ethernet n'a pas de configuration ip valide - Guide
- Publipostage date inversée ✓ - Forum Word
- Mfg date - Forum PC portable
- Publipostage date en anglais ✓ - Forum Excel
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
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 :) !
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 :) !
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
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()
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
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
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
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; } }
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
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...
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
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
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...
:)
Si le jour sert à voir, il sert aussi a etre vue...
je souhaite connaître comment tester les valeurs de $regs
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
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 :
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