Verifier date formulaire

Signaler
Messages postés
11
Date d'inscription
mercredi 12 décembre 2007
Statut
Membre
Dernière intervention
7 juin 2009
-
Messages postés
1267
Date d'inscription
mercredi 7 juillet 2004
Statut
Membre
Dernière intervention
29 juin 2010
-
Bonjour, je ne c'est pas si cette question a deja ete pose alors je la demande quand je voudrais avoir un code en php ou javascript qui verifirait si une date entrer dans un champ de  formulaire est de la forme jj/mm/aaaa et qui retrounerait un message d'erreur lors de l'enregistrement du formulaire si celle ci n'est pas au bon format en gardant les valeurs des champs entrées dans le fomulaire précedament ( de meme pour l'heure pour qu'elle soit au format hh:mm ) sa serait vrement gentil de m'aider parce que je suis actuellement en stage et j'en est besoin pour pouvoir finir le projet que l'entreprise ma confier, merci salutations distinguées

18 réponses

Messages postés
1267
Date d'inscription
mercredi 7 juillet 2004
Statut
Membre
Dernière intervention
29 juin 2010
1
Salut,

Pour garder les valeurs, tu dois faire ton formulaire en le couplant avec une gestion des données. De façon à avoir un code du style :
echo '';
(ici, j'ai tout mis en une seule ligne, rien ne t'empeche de faire un if/else normal)

Sinon, pour ta date, tu peux faire avec des <select /> (un pour le jour, le moi, l'année) idem pour l'heure. (ou alors plusieurs input text)
Mais si tu tiens vraiment à faire en text, regarde au niveau des regex.
if( preg_match('([0-9]+}{1,2}(-|/)([0-9]+}{1,2}\2([0-9]+}{1,2}', '29-06-1990', $matches) )
{
    // ou ([0-9]+}{1,2}-([0-9]+}{1,2}-([0-9]+}{1,2}
    print_r($matches);
}
<hr />Si ma reponse te convient, merci de l'accepter ! 
Messages postés
11
Date d'inscription
mercredi 12 décembre 2007
Statut
Membre
Dernière intervention
7 juin 2009

eu j'ai un peu du mal a comprendre le code que tu m'a envoye ? sinon je suis obliger d'y faire en texte que apres la date et leur son afficher dans un tableau dans une autre page et elle son classe par ordre coissant sinon sa deviendre trop compliquer et vu que je suis encore un debutant lol
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
25
Hello,

juste...une expression régulière ne permettra que de vérifier le format de la date entrée, pas sa validité.
Pour la validité, il faut la transformer, par exemple, en date dans un format accepté par strtotime(), et vérifier le retour de cette fonction. On peut aussi utiliser checkdate() mais cette dernière ne prend pas les heures en compte.
Messages postés
1267
Date d'inscription
mercredi 7 juillet 2004
Statut
Membre
Dernière intervention
29 juin 2010
1
Si je comprend bien, après que tu ais envoyer ton formulaire, tu le sauvegarde (BD ? fichier ? ... ?) et tu affiche dans un tableau, qui est trié.

En fait, tu peux faire avec ma mèthode (des selects ou des inputs text) de cette manière :

1er : les selects
<form action="" method="POST">
 

  <select name="days">

   <option value="1">1</option>    <option
value="1">2</option>    <option
value="1">3</option>    <option
value="1">4</option>

   <!-- [...] -->    <option value="31">31</option>

  </select>

  <select name="monts">

   <option value="1">Janvier</option>   <!-- [...] -->    <option value="12">Décembre</option>

  </select>

  <select name="years">

   <option value="2008">2008</option>   <!-- [...] -->    <option value="1950">1950</option>
  </select>
   Pour l'année, je trouve qu'il vaut mieux utiliser le PHP pour générer le formulaire (comme ça on à une année toujours à jour ;))
 
</form>

2eme  input text (plus simple)
<form action="" method="POST">

 



 
  /



 



  /
 

 

</form>

Ensuite, quand tu sauvegarde, tu réassemble le tout :

// verification des POST
if( isset($_POST['days'], $_POST['months'], $_POST['years']) && is_numeric($_POST['days']) && is_numeric($_POST['months']) && is_numeric($_POST['years']) )
{
    // intval() est une fonction pour transformer une chaine de caractère en chiffre (protection)
    $date = intval($_POST['days']) . '/' . intval($_POST['monts']) . '/' . intval($_POST['years']);
}
Sinon, avec mon code, tu dois juste vérifier le format de ta date grâce aux regex.
<hr />Si ma reponse te convient, merci de l'accepter ! 
Messages postés
11
Date d'inscription
mercredi 12 décembre 2007
Statut
Membre
Dernière intervention
7 juin 2009

oué enfete je developpe une sorte de logiciel de getsion d'appel d'une entreprise d'informatique quand ont les appelle ya un technicien qui ouvrira le logiciel et qui  enregistre les donner conernan lappelan dan un formulaire, i doi avoir une parti helpdesk o ka ou une resolution du probleme peu etre resolue par apelle sinon on affecte une date d'echeance et une heure d'échéance(d'ou est mon probleme lol)  donc apres ces données sont enregistrer dans la abse de donnée et apre on doi pouvoir voir les apelles dans une liste d'appel  donc mon tableau trier par date d'échéance et heure d'échéance mais y doit etre classer par statute ( en cour, en attente) et par type aussi (critique, majeur ...) la aussi jai un souci d'ailleur lol sinon je vais essayer la deuxieme methodes (pour l'autre je peux pas genere l'annee du jour comme c'est des dates d'echance)  mais qu'est qui faut que je mette pour que si ma date est inferieure a celle d'aujourd'hui sa me retourne mon fomulaire avec les valeur qui avait d'entrer dans les autres champs et affiche un message d'erreur disant que la date n'est pas valide ? 
Messages postés
1267
Date d'inscription
mercredi 7 juillet 2004
Statut
Membre
Dernière intervention
29 juin 2010
1
Re,

voila l'adaptation avec strtotime()

$_POST['days'] = 29;
$_POST['monts'] = 06;
$_POST['years'] = 90;
$_POST['hours'] = 11;
$_POST['minutes'] = 05;

$date1 = intval($_POST['monts']) . '/' . intval($_POST['days']) . '/' . intval($_POST['years']);
$date2 = intval($_POST['hours']) . ':' . intval($_POST['minutes']);

$time = strtotime($date1 . ' ' . $date2);

echo date('d/m/Y H:i', $time);

Ici, tu peux faire :

if( $time < time() )
{
    echo 'Erreur ! Une écheance ne peut se située dans le passé';
}

<hr />Si ma reponse te convient, merci de l'accepter ! 
Messages postés
11
Date d'inscription
mercredi 12 décembre 2007
Statut
Membre
Dernière intervention
7 juin 2009

si j emet jsute un if comme sa, je pourais pas recuperer mon formulaire avec mes anciene valeur dedans ??
Messages postés
1267
Date d'inscription
mercredi 7 juillet 2004
Statut
Membre
Dernière intervention
29 juin 2010
1
Euh, si.

En fait pour récuperer les valeurs, il faut juste que lorsque l'on valide le formulaire, on reste sur la page du formulaire et qu'il y ai un traitement. Si il y a des erreurs, on passe le traitement et on affiche un message d'erreur.
Ensuite, dans le formulaire en lui même tu joue sur les <... values="..." />

Ici, le if/$time ne fait que traité le résultat du formulaire. Après, rien ne t'empéche defaire un <?php echo date('d/m/Y', $time); ?> pour récuprer la date (H:i pour l'heure/min)

Et avec le message précédent. Il te suffit de faire un <?php echo $date1; ?> pour la date et un <?php echo $date2; ?> pour l'heure/minutes

<hr />Si ma reponse te convient, merci de l'accepter ! 
Messages postés
11
Date d'inscription
mercredi 12 décembre 2007
Statut
Membre
Dernière intervention
7 juin 2009

ok donc en faite mon code faut que je le mette dans ma page de mon formulaire ? et non pas  dans ma page d'enregistrement ?
Messages postés
1267
Date d'inscription
mercredi 7 juillet 2004
Statut
Membre
Dernière intervention
29 juin 2010
1
Ouep.

Sinon, faut que tu passe par les _SESSION (tu enregistre dans les sessions, et sur le forum, si les sessions existent, tu les affiches ... mais bon, moi perso j'aime pas trop).

<hr />Si ma reponse te convient, merci de l'accepter ! 
Messages postés
11
Date d'inscription
mercredi 12 décembre 2007
Statut
Membre
Dernière intervention
7 juin 2009

okai bon je vais essaye, si jamais je n'y arrive pas y aurais moyen que je t'envoie mon code pour que tu regarde ?
Messages postés
1267
Date d'inscription
mercredi 7 juillet 2004
Statut
Membre
Dernière intervention
29 juin 2010
1
Bien sûr.

(sur le forum )

<hr />Si ma reponse te convient, merci de l'accepter ! 
Messages postés
11
Date d'inscription
mercredi 12 décembre 2007
Statut
Membre
Dernière intervention
7 juin 2009

bon apparament sa marche me reste plus qu'a mettre pour que quand la date et infferieur a celle d'aujourd'hui que sa renvoye une erreur me j'y ferais plus tard c'est du détails.


J'ai une autre question en faite quand apres on va dans ma liste appel en cliquant sur le nom ou la date sa m'ouvre un formulaire en me remplissant les champs avec les valeurs qui ont ete enregistrer dans la base de donnée et je voudrais savoir si c'est possible et comment faire de faire un bouton que en cliquant dessu celui ci me rajoute une parti de fomulaire a mon formulaire(qui sera mon intervention n°1) et que apres le bout de fomulaire qui c'est rejouter le bouton se remet a nouveau et que si on reclique dessu sa nou rajoute une autre parti intervention n°2 ??? je pensais avec une boucle for mais je vois pas comment faire
Messages postés
1267
Date d'inscription
mercredi 7 juillet 2004
Statut
Membre
Dernière intervention
29 juin 2010
1
Euh ...

La je te conseil de voir au niveau de ta base.
Perso je ferais un ID à la personne. Puis, à chaque demande on crée une nouvelle entrée dans la base (dans à une table fille).
Je m'explique mal :s

table 1 : les clients
 -> ID_client
 -> ...

table 2 (la fille) : les interventions
  -> ID_Intervention
  -> ID_client
  -> ...

Donc, tu choisis ton client, puis tu arrive sur une page avec la liste des interventions. Là, il y a la possibilité d'ajouté une nouvelle intervention via un formulaire. (un peu le principe d'un forum)
<hr />Si ma reponse te convient, merci de l'accepter ! 
Messages postés
11
Date d'inscription
mercredi 12 décembre 2007
Statut
Membre
Dernière intervention
7 juin 2009

ue enfete moi j'ai une table client, appel, technicien et intervention.ouai c'est pas mal enfete que tu pense c'est que je fasse un bouton dans mon formulaire que je visualise qui me renvoye sur une liste ( une sorte de tableau) ou avec un bouton creant des interventions ? sa peu etre plus simple mais le truc qui risque de coincé c'est que en faite , j'ai un systeme de login pour les personnes qui ont apeler pour qui puisse voir leur infomation les concernant mais qui puisse pas y modifier, la question que je me pose c'est si je vais pouvoir leur faire voir la liste de leur interventions les concernant ?
Messages postés
1267
Date d'inscription
mercredi 7 juillet 2004
Statut
Membre
Dernière intervention
29 juin 2010
1
Euh, la c'est une question de gestion.

Si un client peut accèder à sa page, tu liste sur celle-ci toutes les interventions avec son ID d'utilsateur (ID_Client). Idem pour les techniciens (page perso)

<hr />Si ma reponse te convient, merci de l'accepter ! 
Messages postés
11
Date d'inscription
mercredi 12 décembre 2007
Statut
Membre
Dernière intervention
7 juin 2009

oki je vais essayer lol
tu est informaticien ou tu est étudiant ?
merci pour tout quand meme :p
Messages postés
1267
Date d'inscription
mercredi 7 juillet 2004
Statut
Membre
Dernière intervention
29 juin 2010
1
^__^



Un simple lycée (étudiant d'ici peu normalment ^^).

Je vais aller voir dans mes archives, mais j'avais déjà fait un script comme celui-ci (site de SAV). mais bon, (vraiment) pas sûr que je le retrouve :s

<hr />Si ma reponse te convient, merci de l'accepter !