Partage
  • Partager sur Facebook
  • Partager sur Twitter

regex pour la date

    31 décembre 2005 à 14:36:29

    Bonjours a tous je suis en train de grave galerer pour cree un regex potable pour controler la date,
    Donc j'ai trois formulaire : un pour les jours donc de 1 a 31
    1 pour les mois donc 1-12
    et un pour les annees en 4 chifre.
    Et me voila bloquer, Surtout pour le premier (et le deuxieme bien sur, c'est cassi le meme), pouvez vous maider, merci d'avance.
    • Partager sur Facebook
    • Partager sur Twitter
      31 décembre 2005 à 14:38:14

      qu'est-ce-que tu veux faire parce que la je vois vraiment pas ce que tu veux arriver a faire
      • Partager sur Facebook
      • Partager sur Twitter
        31 décembre 2005 à 14:42:25

        controler ce que met l'utilisateur, si il met 32 le regex me renvoit non, et je marque date non valide si c'est bon je passe au controle suivant!
        Comprendez? ;-)
        • Partager sur Facebook
        • Partager sur Twitter
          31 décembre 2005 à 14:51:18

          je pense qu'il ne faut pas utiliser les regex

          moi je ferais

          if ($date_mois_entree==1|3|5|7|8|10|12) //si on est dans un mois a 31 jours
          {
             if ($date_jour_entree>31)//si la date est plus grande que 31   
             {
                echo 'votre date n\'est pas valide';
             }
          }

          elseif ($date_moi_entree==2|4|6|9|11|) //si on est dans un mois a 30 jours
          {
             if ($date_jour_entree>30)//si la date est plus grande que 30   
             {
                echo 'votre date n\'est pas valide';
             }
          }
          • Partager sur Facebook
          • Partager sur Twitter
            31 décembre 2005 à 14:52:38

            Ca serait pas mieux de faire 3 champs <select></select> avec chacun toutes les options possibles ? Pour les jours et l'année, tu peux même générer ça en PHP ^^
            • Partager sur Facebook
            • Partager sur Twitter
              31 décembre 2005 à 14:53:55

              J'y est pensé, mais j'avais la fleme de tout ecrire, tu fait comment pour les générer
              • Partager sur Facebook
              • Partager sur Twitter
                31 décembre 2005 à 14:55:01

                oui mais moi je montrais juste le traitement des reponses du visiteur
                • Partager sur Facebook
                • Partager sur Twitter
                  31 décembre 2005 à 14:57:48

                  oaui mais si tu met 0 le script fonctionne, pas bon et en negatif aussi et meme avec des lettres, pas cool pour une date.
                  • Partager sur Facebook
                  • Partager sur Twitter
                    31 décembre 2005 à 15:00:30

                    bah alors tu modifie la condition:


                    if ($date_jour_entree>31 || $date_jour_entree<=0)//si la date est plus grande que 31 ou plus petite ou egal a 0
                    • Partager sur Facebook
                    • Partager sur Twitter
                      31 décembre 2005 à 16:36:42


                      Voila , je me suis amusé a faire un petit script de verification de la date :
                      <?
                      if ( $_POST['jour'] == NULL AND $_POST['mois'] == NULL AND $_POST['année'] == NULL )
                                      {
                                      /// formulaire date
                                      ?>
                                     
                                     
                                     
                                      <form id="date" action="date.php" method="post" name="date">
                                      entrée une date :  <input type="text" name="jour" size="2"><input type="text" name="mois" size="2"><input type="text" name="année" size="7"><input type="submit" name="submitButtonName" value="envoyer">
                                      </form><? }
                                                     

                      elseif ( $_POST['jour'] == NULL or $_POST['mois'] == NULL or  $_POST['année'] == NULL )
                                      {
                                     
                                     
                                      /// Formulaire date signalant l'oublie d'un ou plusieurs champs
                                     
                                       echo 'vous n\'avez pas rentré tt les champs demandés ' ;
                                       echo '<form id="date" action="date.php" method="post" name="date">entrée; une date :  <input type="text" name="jour" value="' . $_POST['jour'] . '" size="2"><input type="text" name="mois"  value="' . $_POST['mois'] . '" size="2"><input type="text" name="année"  value="' . $_POST['année'] . '" size="7"><input type="submit" name="submitButtonName" value="envoyer"></form>' ;
                      }
                      else {


                      /// quand on rentre une date :
                      $date_jour_entree = $_POST['jour'] ;
                      $date_mois_entree = $_POST['mois'] ;
                      $date_années_entree = $_POST['année'] ;

                      /// debut du script de verification

                      if (is_numeric($date_jour_entree) != true or is_numeric($date_mois_entree) != true or is_numeric($date_années_entree) != true)   /// on verifie que seul les valeurs numariques sont insérées
                                              {
                                              echo 'la date doit etre ecrit en valeur numerique uniquement ';
                                              exit ;
                                              }
                                             
                      elseif (strlen($date_années_entree) != 4 ) /// on verifie que la date est sous la forme 1989
                      { echo ' l\'année doit ecrit sous cette forme la : 1989 ' ;
                      exit ;}

                      else {
                                                              /// verification de la validité des jours et des mois
                                                              if ( $date_mois_entree > 12 or $date_mois_entree < 1) {
                                                              echo 'votre date n\'est pas valide, ce mois n\'existe pas';
                                                              exit ;
                                                              }
                                                             
                                                              elseif ($date_mois_entree==1|3|5|7|8|10|12) //si on est dans un mois a 31 jours
                                                              {
                                                                                 if ($date_jour_entree > 31 or $date_jour_entree < 1 )//si la date est plus grande que 31   
                                                                                 {
                                                                                    $validation = 'non';
                                                                                 }
                                                              }
                                                             
                                                             
                                                      elseif ( $date_moi_entree==2|4|6|9|11 ) //si on est dans un mois a 30 jours
                                                      {
                                                                         if ($date_jour_entree > 30 or $date_jour_entree < 1)//si la date est plus grande que 30   
                                                                         {
                                                                            $validation = 'non';
                                                                         }
                                                      }
                                      }


                      if ( $validation == 'non' )
                      {
                      echo 'votre date n\'est pas valide, ce jour n\'existe pas';
                      exit ;
                      }
                      else {


                      /// Faisons correspondre les chiffres à leurs noms correspondants

                              if ($date_mois_entree == 1 ) { $date_mois_entree = str_replace($date_mois_entree , "janvier" , $date_mois_entree) ; }
                              elseif ($date_mois_entree == 2 ) { $date_mois_entree = str_replace($date_mois_entree , "fevrier" , $date_mois_entree) ; }
                              elseif ($date_mois_entree == 2 ) { $date_mois_entree = str_replace($date_mois_entree , "mars" , $date_mois_entree) ; }
                              elseif ($date_mois_entree == 4 ) { $date_mois_entree = str_replace($date_mois_entree , "avril" , $date_mois_entree) ; }
                              elseif ($date_mois_entree == 5 ) { $date_mois_entree = str_replace($date_mois_entree , "mai" , $date_mois_entree) ; }
                              elseif ($date_mois_entree == 6 ) { $date_mois_entree = str_replace($date_mois_entree , "juin" , $date_mois_entree) ; }
                              elseif ($date_mois_entree == 7 ) { $date_mois_entree = str_replace($date_mois_entree , "juillet" , $date_mois_entree) ; }
                              elseif ($date_mois_entree == 8 ) { $date_mois_entree = str_replace($date_mois_entree , "aout" , $date_mois_entree) ; }
                              elseif ($date_mois_entree == 9 ) { $date_mois_entree = str_replace($date_mois_entree , "septembre" , $date_mois_entree) ; }
                              elseif ($date_mois_entree == 10 ) { $date_mois_entree = str_replace($date_mois_entree , "octobre" , $date_mois_entree) ; }
                              elseif ($date_mois_entree == 11 ) { $date_mois_entree = str_replace($date_mois_entree , "novembre" , $date_mois_entree) ; }
                              elseif ($date_mois_entree == 12 ) { $date_mois_entree = str_replace($date_mois_entree , "decembre" , $date_mois_entree) ; }
                             
                      echo "La date que vous avez entré est le $date_jour_entree  $date_mois_entree  $date_années_entree";

                      }} ?>
                      • Partager sur Facebook
                      • Partager sur Twitter
                        31 décembre 2005 à 17:30:51

                        Citation : isight


                        Voila , je me suis amusé a faire un petit script de verification de la date :



                        Bin mon vieux ! :-°
                        Si je peux me permettre, pour utiliser ton script, j'aime autant me coder une petite regex alors !
                        De plus, is_numeric() ne vaut pas un clou car accepte des float. :-°
                        • Partager sur Facebook
                        • Partager sur Twitter
                          31 décembre 2005 à 17:47:25

                          excuse, tu le remplace par is_real() si tu prefere. c'est vrai que real est plus approprié dans cette situation
                          • Partager sur Facebook
                          • Partager sur Twitter
                            1 janvier 2006 à 11:53:58

                            Citation : isight

                            excuse, tu le remplace par is_real() si tu prefere. c'est vrai que real est plus approprié dans cette situation


                            Mais qu'est ce que tu racontes ? :(
                            • Partager sur Facebook
                            • Partager sur Twitter
                              1 janvier 2006 à 16:37:43

                              je di juste que pour que les float ne soient pas acceptés, il fau remplacer la ligne :
                              if (is_numeric($date_jour_entree) != true or is_numeric($date_mois_entree) != true or is_numeric($date_années_entree) != true)


                              par cette ligne

                              if (is_real($date_jour_entree) != true or is_real($date_mois_entree) != true or is_real($date_années_entree) != true)

                              • Partager sur Facebook
                              • Partager sur Twitter
                                1 janvier 2006 à 19:37:37

                                Je crois qu'un tour sur la doc PHP te serait vachement profitable.

                                Puis de toutes façons, checkdate() fait en une demi ligne ce que ton script ne réussi pas à faire en 60.
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  1 janvier 2006 à 20:34:14

                                  un select n'empeche pas les utilisateurs de prendrent d'autres option

                                  je te bidouille une page xhtml qui envoie un $_POST vers ton serveur et owned
                                  • Partager sur Facebook
                                  • Partager sur Twitter

                                  Mes articles | Nazara Engine | Discord NaN | Ma chaîne Twitch (programmation)

                                  regex pour la date

                                  × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                  × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                  • Editeur
                                  • Markdown