IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP Discussion :

Verifier la validité d'une date encodé dans un champ


Sujet :

ASP

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2005
    Messages : 71
    Points : 26
    Points
    26
    Par défaut Verifier la validité d'une date encodé dans un champ
    Bonjour amis développeurs !!

    J'arrive tout doucement a la fin de mon applic....j'aimerais vérifier que l'utilsateur a encodé une date valide ( format jj/mm/aaaa ) dans un champ de mon formulaire en asp !!

    Y a t il une fonction qui fait ca automatiquement ou faut il passer par du javascript ??

    MErci

  2. #2
    Membre averti Avatar de bourvil
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    411
    Détails du profil
    Informations personnelles :
    Localisation : Israël

    Informations forums :
    Inscription : Juin 2002
    Messages : 411
    Points : 329
    Points
    329
    Par défaut
    salut
    une petite fonction en JScript:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
    function Check_Date_JScript(The_Day , The_Month , The_Year)
    {
     
    	var monthLength = new Array(31,28,31,30,31,30,31,31,30,31,30,31);
    	var The_Day   = The_Day;
    	var The_Month = The_Month;
    	var The_Year  = The_Year;
     
     
    	if (!The_Day || !The_Month || !The_Year)
    	{
    		return false;
    	}	
     
    	if (The_Month < 1 || The_Month > 12)
    	{
    		return false;
    	}	
     
     
    	if (The_Year/4 == parseInt(The_Year/4))
    		monthLength[1] = 29;
     
    	if (The_Day > monthLength[The_Month - 1])
    	{
    		return false;
    	}	
     
    	monthLength[1] = 28;
    	return true;
    }
    Franchement, je suis capable du meilleur comme du pire, mais, dans le pire, c'est moi le meilleur.
    Coluche

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2005
    Messages : 71
    Points : 26
    Points
    26
    Par défaut
    J'appelle cette fonction dans mon bouton onclick ??

    Comment dois je definir le jour, le mois et l'année ?? Entre ce qui est encodé et le var days de la fonction ??

  4. #4
    Membre averti Avatar de bourvil
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    411
    Détails du profil
    Informations personnelles :
    Localisation : Israël

    Informations forums :
    Inscription : Juin 2002
    Messages : 411
    Points : 329
    Points
    329
    Par défaut
    bein oui sur un onclick!
    et tu envoye le jour, le mois et l'annee en parametre
    Franchement, je suis capable du meilleur comme du pire, mais, dans le pire, c'est moi le meilleur.
    Coluche

  5. #5
    Expert éminent
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Points : 9 506
    Points
    9 506
    Par défaut
    La fonction fait-elle la différence entre: 01/02/2005 et 02/01/2005? Selon que c'est en FR ou en US ce n'est pas la même chose.

    A+
    "Winter is coming" (ma nouvelle page d'accueil)

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2005
    Messages : 71
    Points : 26
    Points
    26
    Par défaut
    Oui mais comment je fais pour separer la date encodé ??

    The_days = Request.Form("Right/4"Année"")
    The_Month =......???
    The_Days = ... ??

    Je comprends pas tres bien encore comment passer des parametres dans la fonction javascript !!

  7. #7
    Membre averti Avatar de bourvil
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    411
    Détails du profil
    Informations personnelles :
    Localisation : Israël

    Informations forums :
    Inscription : Juin 2002
    Messages : 411
    Points : 329
    Points
    329
    Par défaut
    j'utilise cette fonction avec trois select:
    un pour le jour, qui te donnera le parametre The_Day
    un pour le mois, qui te donnera le parametre The_Month
    un pour l'annee, qui te donnera le parametre The_Year
    Franchement, je suis capable du meilleur comme du pire, mais, dans le pire, c'est moi le meilleur.
    Coluche

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2005
    Messages : 71
    Points : 26
    Points
    26
    Par défaut
    Excusez moi mais personne ne saurait me donner un exemple plus concret ??


    Dans le formulaires, j'ai un champ date d'entree et date de sortie, j'ai un buton submit

    La j'aimerais vérifier la date,

    Mon bouton me dirige vers une autre page qui fait l'insert dans la table access


    Dois je mettre mon code dans la page du formulaire ou celle ou je fait le query ??

  9. #9
    Expert éminent
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Points : 9 506
    Points
    9 506
    Par défaut
    Oublie la verification de la date. Considérons qu'il ne faut pas faire confiance à l'utilisateur dans ce cas. Il ne faut pas lui donner d'autre choix que de saisir une date valide.
    Citation Envoyé par hysteresis
    The_days = Request.Form("Right/4"Année"")
    The_Month =......???
    The_Days = ... ??
    Ce serait plutôt en truc du genre:
    The_days = LEFT(Request.Form("Année"),4)
    Ne pas mettre de caractères accentués dans le code
    Sinon, voici un excellent code pour saisir une date.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    <SCRIPT LANGUAGE='JavaScript'>
    <!--
    // you may use/modify this code, but please give credit as a courtesy
    // script by Arash Ramin (http://www.digitalroom.net)
    function setCurrentDate() {
      // changes the date selector menus to the current date
      var currentDate = new Date();
      document.frmnewextension.year.selectedIndex = 0;
      document.frmnewextension.month.selectedIndex = currentDate.getMonth();
      setDays();  
      document.frmnewextension.day.selectedIndex = currentDate.getDate() - 1;
    }
     
    function setDays() {
      var y = document.frmnewextension.year.options[document.frmnewextension.year.selectedIndex].value;
      var m = document.frmnewextension.month.selectedIndex;
      var d;
      // find number of days in current month
      if ( (m == 3) || (m == 5) || (m == 8) || (m == 10) ) {
        days = 30;
      }
      else if (m == 1) {
        // check for leapyear - Any year divisible by 4, except those divisible by 100 (but NOT 400)
        if ( (Math.floor(y/4) == (y/4)) && ((Math.floor(y/100) != (y/100)) || (Math.floor(y/400) == (y/400))) )
          days = 29
        else
          days = 28
      }
      else {
        days = 31;
      }
      // if (days in new month > current days) then we must add the extra days
      if (days > document.frmnewextension.day.length) {
        for (i = document.frmnewextension.day.length; i < days; i++) {
          document.frmnewextension.day.length = days;
          document.frmnewextension.day.options[i].text = i + 1;
          document.frmnewextension.day.options[i].value = i + 1;
        }
      }
      // if (days in new month < current days) then we must delete the extra days
      if (days < document.frmnewextension.day.length) {
        document.frmnewextension.day.length = days;
        if (document.frmnewextension.day.selectedIndex == -1) 
          document.frmnewextension.day.selectedIndex = days - 1;
      }
    }
    //-->
    </SCRIPT>
    A appeler dans le code en faisant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    <SELECT NAME="year" onChange="setDays();">
      <SCRIPT LANGUAGE='JavaScript'>
    	<!--
    	// get current year and show the dates for the next 10 years
    	var currentDate = new Date();
    	var currentYear = currentDate.getYear();
    	if (currentYear < 2000) {
    	  currentYear += 1900;
    	  }
     
    	for (i = 0; i < 10; i++) {
    	  document.writeln('<OPTION VALUE="' + currentYear + '">' + currentYear);
    	  currentYear++;
    	  }
    	// -->
      </SCRIPT>
    </SELECT>
    <SELECT NAME="month" onChange="setDays();">
      <OPTION VALUE="1">January 
      <OPTION VALUE="2">February 
      <OPTION VALUE="3">March 
      <OPTION VALUE="4">April 
      <OPTION VALUE="5">May 
      <OPTION VALUE="6">June 
      <OPTION VALUE="7">July 
      <OPTION VALUE="8">August 
      <OPTION VALUE="9">September 
      <OPTION VALUE="10">October 
      <OPTION VALUE="11">November 
      <OPTION VALUE="12">December </SELECT> <SELECT NAME="day">
      <SCRIPT LANGUAGE="JavaScript">
    	// Netscape doesn't seem to like a SELECT menu without any <OPTION> elements
    	for (i = 1; i < 10; i++) {
    	  document.writeln('<OPTION VALUE="' + i + '">' + i);
    	}
    	// -->
      </SCRIPT>
    </SELECT>
    NB
    "Winter is coming" (ma nouvelle page d'accueil)

  10. #10
    Expert éminent
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Points : 9 506
    Points
    9 506
    Par défaut
    Sinon, tu fais une recherche sur en utilisant les mots clefs : javascript calendar.
    "Winter is coming" (ma nouvelle page d'accueil)

  11. #11
    Expert confirmé
    Avatar de pc75
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    3 662
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 3 662
    Points : 4 047
    Points
    4 047
    Par défaut
    Bonjour,

    Je pense aussi à une solution qui consiste à afficher un calendrier (style OutLook) dans lequel l'utilisateur ne pourra pas saisir, mais uniquement cliquer sur une date.
    La date sera donc toujours valide.

  12. #12
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2005
    Messages : 71
    Points : 26
    Points
    26
    Par défaut
    Merci immobilis, je pense que ta solution est la bonne, j'ai deja effectué l'encodage de cette maniere, me reste + qu'a effectuer la modification d'une date donc la récuperation d'une date au format jj/mm/aaaa dans le select...



  13. #13
    Membre chevronné Avatar de Oluha
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 183
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 183
    Points : 1 967
    Points
    1 967
    Par défaut
    moi j'ai une fonction qui vérifie si la date est valide. Par exemple elle reconnait que le 29/02/2005 n'existe pas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    function IsGoodDate(mydate){ 
        var thedate=mydate.split('/');
        if((mydate.length!=10)|| 
           (thedate.length!=3)|| 
           (isNaN(parseInt(thedate[0])))|| 
           (isNaN(parseInt(thedate[1])))|| 
           (isNaN(parseInt(thedate[2])))|| 
           (thedate[0].length<2)|| 
           (thedate[1].length<2)|| 
           (thedate[2].length<4)) return false; 
        var an=eval(thedate[2]); 
        var mo=eval(thedate[1]); 
        var jo=eval(thedate[0]); 
        var onedate=new Date(an,mo-1,jo); 
        an=onedate.getYear(); 
        if(an.length<4) an=an+1900; 
        if((onedate.getDate()!=jo)|| 
           (onedate.getMonth()!=mo-1)|| 
           (onedate.getYear()!=an)) { return false; } else { return true; } 
    }

  14. #14
    Expert éminent
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Points : 9 506
    Points
    9 506
    Par défaut
    On peut toujours coupler les deux solutions, mais à mon sens, il ne faut jamais laisser la main à l'internaute pour saisir manuellement une date.

    Une verification côté serveur est evidement un cran de sureté en plus.
    "Winter is coming" (ma nouvelle page d'accueil)

  15. #15
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2005
    Messages : 71
    Points : 26
    Points
    26
    Par défaut
    Comment pourrais je faire pour selectionner directement le bon jour dans la selection ?

    Exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
     
    DDays=Day(Rs("Entree"))
     
    SELECT NAME="days"> 
      <SCRIPT LANGUAGE="JavaScript"> 
       // Netscape doesn't seem to like a SELECT menu without any <OPTION> elements 
       for (i = 1; i < 32; i++) { 
     
       [color=red]   if(i=<%=DDays[/color]%>)  
          document.writeln('<OPTION VALUE="' + i + '">' + i);
    	 else
     
       } 
       // --> 
      </SCRIPT> 
    </SELECT>

  16. #16
    Expert éminent
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Points : 9 506
    Points
    9 506
    Par défaut
    C'est là-dedans qq part:
    function setCurrentDate() {
    // changes the date selector menus to the current date
    var currentDate = new Date();
    document.frmnewextension.year.selectedIndex = 0;
    document.frmnewextension.month.selectedIndex = currentDate.getMonth();
    setDays();
    document.frmnewextension.day.selectedIndex = currentDate.getDate() - 1;
    }
    "Winter is coming" (ma nouvelle page d'accueil)

Discussions similaires

  1. Verifier si une date est dans un intervalle
    Par Le gris dans le forum C#
    Réponses: 4
    Dernier message: 04/07/2011, 16h26
  2. Comment coder une date NULL dans un champ datetime ?
    Par tonton67 dans le forum Développement
    Réponses: 3
    Dernier message: 11/11/2008, 11h54
  3. Réponses: 2
    Dernier message: 27/08/2008, 18h13
  4. Réponses: 10
    Dernier message: 16/05/2008, 19h29
  5. Réponses: 3
    Dernier message: 21/01/2007, 10h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo