Verification du format de date
Posté : 12 sept. 2007, 15:19
Slt tous le monde
je suis entrains de mettre en place un procédure qui vas permettre de vérifier le bon format de la date insérer dans un formulaire.
dans mon formulaire j'ai un champs "date debut" :
L'action du formulaire pointe sur une page ajout.php.
dans cette page j'ai une partie de code qui vas vérifier le bon format des dates de début et de fin
1) avec la date de début au mauvais format et la date de fin au bon format.
je me retrouve avec le message d'erreur qui s'affiche au niveau de la date de fin et de début ???
chose qui ne devrait pas faire, logiquement je voudrais qu'il affiche juste le message pour la date de début?
2) alors que si j'ai la date de début au bon format et la date de fin au mauvais format
je me retrouve avec le message d'erreur qui s'affiche au niveau de la date de fin.
ce qui est correcte
savez vous pourquoi ?
merci de votre aide
je suis entrains de mettre en place un procédure qui vas permettre de vérifier le bon format de la date insérer dans un formulaire.
dans mon formulaire j'ai un champs "date debut" :
<?php
if (!session_is_registered(erreur_date_debut)) { ?>
<input name="date_debut" type="text" id="date_debut" value="<? echo $_SESSION[date_debut]; ?>" maxlength="10" />
<?php } else { ?>
<input name="date_debut" type="text" id="date_debut" value="" maxlength="10" />
<span class="erreur"><strong>ERREUR DE SAISIE</strong><br />
Le format de la date doit être jour/mois/annee</span>
<?php } ?>
et un champ "date_fin":
<?php if (!session_is_registered(erreur_date_fin)) { ?>
<input name="date_fin" type="text" id="date_fin" value="<? echo $_SESSION[date_fin]; ?>" maxlength="10" />
<?php } else { ?>
<input name="date_fin" type="text" id="date_fin" value="" maxlength="10" />
<span class="erreur"><strong>ERREUR DE SAISIE</strong><br />
Le format de la date doit être jour/mois/annee </span>
<?php } ?>
L'action du formulaire pointe sur une page ajout.php.
dans cette page j'ai une partie de code qui vas vérifier le bon format des dates de début et de fin
if (preg_match("#^[0-9]{2}\/{1}[0-9]{2}\/{1}[0-9]{4}$#", $debut_congres))
{
// SI la valeur saisie est correcte on décompose $debut_congres
list ($jour_debut_congres, $mois_debut_congres, $annee_debut_congres) = explode ("/",$debut_congres);
// on donne la composition de la variable $_SESSION[date_fin], pour que l'on puisse afficher le bon format dans le cas ou il y aurais une erreur
$_SESSION[date_debut] = $jour_debut_congres.'/'.$mois_debut_congres.'/'.$annee_debut_congres;
// on donne la composition de la variable SESSION[date_fin_sql] pour quelle soit au format americain 2007-05-12
$_SESSION[date_debut_sql] = $annee_debut_congres.'-'.$mois_debut_congres.'-'.$jour_debut_congres;
}
else
{
session_register("erreur_date_debut"); // renvoie sur l'erreur
header("Location:../agenda/ajout_congres.php"); // renvoie sur la page du formulaire
exit();
}
Et juste en dessous de celle-ci la même chose mais pour la date de fin :if (preg_match("#^[0-9]{2}\/{1}[0-9]{2}\/{1}[0-9]{4}$#", $fin_congres))
{
// on decompose $debut
list ($jour_congres_fin, $mois_congres_fin, $annee_congres_fin) = explode ("/",$fin_congres);
// on donne la composition de la variable $_SESSION[date_fin], pour que l'on puisse affichier le bon format dans le cas ou il y aurais une erreur
$_SESSION[date_fin] = $jour_congres_fin.'/'.$mois_congres_fin.'/'.$annee_congres_fin;
// on donne la composition de la variable SESSION[date_fin_sql] pour quelle soit au format americain 2007-05-12
$_SESSION[date_fin_sql] = $annee_congres_fin.'-'.$mois_congres_fin.'-'.$jour_congres_fin;
}
else
{
session_register("erreur_date_fin"); // Enregistre une variable dans une session
header("Location:../agenda/ajout_congres.php"); // rediriger sur le formulaire
exit();
}
Le problème est que lorsque je fais une test :1) avec la date de début au mauvais format et la date de fin au bon format.
je me retrouve avec le message d'erreur qui s'affiche au niveau de la date de fin et de début ???
chose qui ne devrait pas faire, logiquement je voudrais qu'il affiche juste le message pour la date de début?
2) alors que si j'ai la date de début au bon format et la date de fin au mauvais format
je me retrouve avec le message d'erreur qui s'affiche au niveau de la date de fin.
ce qui est correcte
savez vous pourquoi ?
merci de votre aide