je suis en train de faire un script php qui va me permettre de verifier la validité d'une date inserer dans un champ de formulaire.
pour l'instant je verifie juste le format d'insertion du champs (JJ/MM/AAAA) et aussi si le champs n'est pas vide
j'ai un soucis avec mon code car si j'entre un date au format valide, j'ai le message suivant:
mais pas le message comme quoi le format de la date est invalideUn (ou plusieurs) champ(s) obligatoire(s) n'a(ont) pas été correctement rempli(s).
si par contre je rentre la date dans un format invalide (31-12-2000 par exemple), ça passe sans message d'erreur
voici le code du formulaire php:
<?php
/**
* Comme il s'agit de XHTML, encadrement de la balise xml pour un affichage
* normal sans message d'erreur de PHP
*/
echo "<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n";
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<html>
<head>
<title>:: essai date valide ::</title>
<link href="formulaire.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="page">
<?php
/**
* On commence par vérifier si le bouton soumettant le formulaire a été
* cliqué, "envoi" étant l'attribut "name" du bouton "submit"
* Sinon, on saute à la ligne 127 de ce code.
*/
if(isset($_POST['envoi']))
{
/* Récupération des données du formulaire */
$datenaiss = isset($_POST['datenaiss']) ? trim($_POST['datenaiss']) : "";
/* Définition de la variable de validation du FORMAT de la date */
$valid_format_datenaiss = "#(\d{2})/(\d{2})/(\d{4})#";
/* Définition des variables de verification de la validité de la date */
$jour = substr($datenaiss, 0, 2);
$mois = substr($datenaiss, 3, 2);
$annee = substr($datenaiss, 6, 4);
/* Traitement de vérification des champs vides ou invalides niveau du format */
if ($datenaiss == '' || !(preg_match($valid_format_datenaiss,$datenaiss)) || (($datenaiss) && (preg_match($valid_format_datenaiss,$datenaiss)) && (checkdate($mois, $jour, $annee) == false)))
{
/* Action à adopter */
?>
<h3>Informations incomplètes</h3>
<p>Un (ou plusieurs) champ(s) obligatoire(s) n'a(ont) pas été correctement rempli(s).</p>
<?php
/* traitement des messages d erreur */
/* Si le champ datenaiss est vide, */
if(!$datenaiss)
{
print "<p>Vous avez omis de mentionner votre date de naissance</p>\n";
}
/* Si il y a une date inscrite mais au format invalide */
if(($datenaiss) && !(preg_match($valid_format_datenaiss, $datenaiss)))
{
print "<p>Le format de la date de naissance saisie est invalide !</p>\n";
}
/* Si il y a une date inscrite mais invalide */
if (($datenaiss) && (preg_match($valid_format_datenaiss,$datenaiss)) && (checkdate($mois, $jour, $annee) == false))
{
print "<p>La date de naissance saisie est invalide !</p>\n";
}
/**
* Si les vérifications ont généré des erreurs, affichage du formulaire
* contenant les données déjà saisies.
*/
?>
<form action="<?php echo($_SERVER['PHP_SELF']); ?>" method="post">
<fieldset><legend><b>:: Données personnelles ::</b></legend>
<label><span class="legende_elmt">Votre date de naissance : </span><input type="text" name="datenaiss" maxlength="10" class="cases" value="<?php echo $datenaiss ?>" /></label><br />
<div class="c3">
<input type="submit" class="verif" name="envoi" value="Envoyer" /> <input type="reset" class="verif" value="Recommencer" />
</div>
</fieldset>
</form>
<?php
}
else
{
/**
* Si aucun des champs obligatoire n'est vide et les données sont valides:
* Traitement des données
*/
// Affichage du message final des informations reçues
print "<h3>Merci ! Voici les informations que vous avez fournies</h3>\n";
print "<p>votre date de naissance valide est $datenaiss</p>";
}
}
/**
* Si cette page s'ouvre pour la première fois sans que le bouton soumettant le formulaire n'ait
* été cliqué, alors on affiche le formulaire normalement
*/
else
{
?>
<h3>Complétez les informations pour ajouter votre nom à la liste des membres</h3>
<p>Notez que les champs précédés d'une <span class="c1">*</span> doivent obligatoirement être remplis.</p>
<form action="<?php echo($_SERVER['PHP_SELF']); ?>" method="post">
<fieldset><legend><b>:: Données personnelles ::</b></legend>
<label><span class="legende_elmt">Votre date de naissance : </span><input type="text" name="datenaiss" maxlength="10" class="cases" value="" /></label><br />
<div class="c3">
<input type="submit" class="verif" name="envoi" value="Envoyer" /> <input type="reset" class="verif" value="Recommencer" />
</div>
</fieldset>
</form>
<?php
}
?>
</div>
</body>
</html>
si quelqu'un peut m'aider car je ne voit pas d'où vient le problème