Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1638 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  [PHP] Vérifier la validité d'une date

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[PHP] Vérifier la validité d'une date

n°297177
dinbougre8​88
Posté le 30-01-2003 à 17:22:47  profilanswer
 

Voilà j'ai un champ de saisie et je veux contrôler que l'utilisateur a bien saisit une date. du style "30/01/2003"
 
J'ai juste trouver la fonction checkdate() mais bon c pas super pratique pcq je pense faut lui envoyer :
checkdate("01","30","2002" ) non? ça implique un découpage de la chaine. Y a pas un truc tout con comme en VB la fonction isdate?

mood
Publicité
Posté le 30-01-2003 à 17:22:47  profilanswer
 

n°297182
dropsy
et bonne chance surtout...
Posté le 30-01-2003 à 17:27:04  profilanswer
 

tu fais un explode (www.php.net/explode) sur ta date et tu récupères les bon paramètres pour checkdate ;)

n°297191
ethernal
Chercheur de vérité...
Posté le 30-01-2003 à 17:32:12  profilanswer
 

je pense que tu peux ruser en faisant :
if ($ma_date== date("d/m/Y", strtotime($ma_date))){
 echo "ok";
}
 
c'est sans doute pas bon, mais c'est une voie à explorer

n°297197
dinbougre8​88
Posté le 30-01-2003 à 17:34:09  profilanswer
 

ethernal a écrit :

je pense que tu peux ruser en faisant :
if ($ma_date== date("d/m/Y", strtotime($ma_date))){
 echo "ok";
}
 
c'est sans doute pas bon, mais c'est une voie à explorer


 
je préfére pas ce genre de code sur le site :/
c un site professionnel ki sera ptet payant d'accès donc c la misère si ça plante

n°297198
ethernal
Chercheur de vérité...
Posté le 30-01-2003 à 17:36:04  profilanswer
 

:lol:
il te reste l'explode et le checkdate alors
 
c'est pas non plus pcq c une "ruse" que c'est mauvais...
Dans la mesure du possible, on encode la date sur le serveur pas chez le client...


Message édité par ethernal le 30-01-2003 à 17:38:25
n°297199
dinbougre8​88
Posté le 30-01-2003 à 17:37:53  profilanswer
 

y a pas kelkun ki a une fonction toute faite? ça me saoule de faire une fontion :D
 
y a bien le test du if (strtotime($madate)==-1) {... mais trop facile de passer à travers en lui balancant une date americaine ou bien un simple "20/01"

n°297205
ethernal
Chercheur de vérité...
Posté le 30-01-2003 à 17:39:50  profilanswer
 

Dinbougre888 a écrit :

y a pas kelkun ki a une fonction toute faite? ça me saoule de faire une fontion :D


 
si c un site payant... on te paye pour !
bosse un peu alors  :non:

n°297206
dropsy
et bonne chance surtout...
Posté le 30-01-2003 à 17:39:58  profilanswer
 

le explode te suffit pas??
plutot que d'aller utiliser une sombre fonction que tu connais pas, contentes toi d'un truc simple qui marche  ;)

n°297210
dinbougre8​88
Posté le 30-01-2003 à 17:43:00  profilanswer
 

Dinbougre888 a écrit :

y a pas kelkun ki a une fonction toute faite? ça me saoule de faire une fontion :D
 
y a bien le test du if (strtotime($madate)==-1) {... mais trop facile de passer à travers en lui balancant une date americaine ou bien un simple "20/01"  


 
chui payer pour bah moué, chui programmeur normalement VB pas php et on m'a refilé un site à faire et pour moi mon salaire change po donc voilà :/

n°297212
dinbougre8​88
Posté le 30-01-2003 à 17:43:26  profilanswer
 

dropsy a écrit :

le explode te suffit pas??
plutot que d'aller utiliser une sombre fonction que tu connais pas, contentes toi d'un truc simple qui marche  ;)  


 
si, je v faire une fonction avec le explode avec d'ot test

mood
Publicité
Posté le 30-01-2003 à 17:43:26  profilanswer
 

n°297246
dinbougre8​88
Posté le 30-01-2003 à 18:00:23  profilanswer
 

bon pour ceux ke ça interesse  
 

Function isdate($madate) {
     
  if (strlen($madate)!=10) {
   $msgerr = "false";
  }
   
  $tab_dt = explode("/", "$madate" ) ;
  if (count($tab_dt) != 3) {
   $msgerr = "false";
  }
   
  if ($tab_dt[1] > 12) {
   $msgerr = "false";
  }    
   
  if (checkdate($tab_dt[1], $tab_dt[0], $tab_dt[2]) == false) {
   $msgerr = "false";
  }
   
  if ($msgerr=="" ) {
   return(true);
  }
  else {
   return(false);
  }
 }

n°297309
Sh@rdar
Ex-PhPéteur
Posté le 30-01-2003 à 18:48:46  profilanswer
 

version courte (un peu moins lisible peut être)
 

Code :
  1. <?
  2. Function isdate($madate) {
  3.   $msgerr = TRUE;
  4.   $tab_dt = explode('/',$madate);
  5.   if ( strlen(trim($madate))!=10 || count($tab_dt)!=3 || $tab_dt[1]>12 || checkdate($tab_dt[1], $tab_dt[0], $tab_dt[2]) == FALSE  ) {
  6.     $msgerr = FALSE;
  7.   }
  8.   return $msgerr;
  9. }
  10. ?>


---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft
n°297325
dinbougre8​88
Posté le 30-01-2003 à 19:09:12  profilanswer
 

oué mais g décomposer pour plus de facilité  
je débute en php :(
 
on me file un big projet et je connait ked en php

n°297663
ethernal
Chercheur de vérité...
Posté le 31-01-2003 à 01:41:05  profilanswer
 

avec votre fonction la date :
"1e/10/1999" passe sans prob à la vérification :D
 
bon je te donne la soluce :

Code :
  1. function check_ma_date($iDate){
  2.   list($day,month,$year)= explode('/', $iDate, 3); //le 3 pcq je veux que 3 indices à mon tableau
  3.   if (ereg("^([0-9]{2})/([0-9]{2})/([0-9]{4})$", $iDate) && checkdate( $month, $day, $year ) && $year>=1900 ){
  4.     return true;
  5.   }
  6.   return false;
  7. }


explication de l'ereg :
- 2 positions numériques  
- un /
- 2 positions numériques  
- un /
- 4 positions numériques  
--> 10 positions au total coupées par 2 '/' en 3 parties.
 
ou
 

Code :
  1. function check_ma_date($iDate){
  2.   if (ereg("^([0-9]{2})/([0-9]{2})/([0-9]{4})$", $iDate, $date) && checkdate( $date[2], $date[1], $date[3] ) && $date[3]>=1900 ){
  3.     return true;
  4.   }
  5.   return false;
  6. }


l'expression ereg décompose la date reçue dans $date.
$date[0]= $idate
$date[1]= $day
$date[2]= $month
$date[3]= $year
 
c'est bcp mieux ;)
 
ps : dis à ta boite d'engager des programmeurs php pour faire du php... en plus, ça fera du boulot à Sh@rdar (et pq pas à moi...) ! :lol:


Message édité par ethernal le 31-01-2003 à 11:49:57
n°298098
Dost67
Posté le 31-01-2003 à 16:41:24  profilanswer
 

C grave.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  [PHP] Vérifier la validité d'une date

 

Sujets relatifs
[ORACLE][PHP] erreur ORA-12154 intermittentelibération espace mémoire PHP
[PHP] Lire un son au fur et a mesureRedirection PHP + Temps d'attente
[Documentation] Cookies PHP[FORUM] Problème avec mon forum PHP bb
[PHP] question toute bete [resolu][PHP MySQL] divers problemes de tres bas nivo
[PHP] authetification[PHP] vérifier la validité d'une date
Plus de sujets relatifs à : [PHP] Vérifier la validité d'une date


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR