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

Langage PHP Discussion :

[Dates] Test formulaire majorité


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Inscrit en
    Février 2003
    Messages
    219
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 219
    Points : 72
    Points
    72
    Par défaut [Dates] Test formulaire majorité
    Bonjour,

    J'ai un formulaire sur lequel l'utilisateur rentre une date de naissance.

    Je voudrai 2 choses :

    Le forcer à écrire sour la forme jj/mm/aaaa
    et ensuite tester que cette personne à 18 ans minimum.

    Merci a vous.

  2. #2
    Membre éprouvé Avatar de FCYPBA
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 745
    Points : 952
    Points
    952
    Par défaut
    Bonjour,

    Pour le forcer à écrire sous une certaine forme, tu peux soit indiquer le format ( indication visuelle) et le vérifier avant l'envoi avec du javascript.
    Tu peux également placer une liste déroulante pour chaque terme ( jour, mois et annee ). L'avantage est que la saisie est fermée. De toute façon, tu devras rajouter une vérification en javascript pour savoir si la date est valide

    Pour le test de la majorité, cela se fait très simplement en utilisant les fonctions de dates via les timestamp si la date est supérieure à 1970, sinon la personne est majeure de toute façon.

  3. #3
    Membre régulier
    Inscrit en
    Février 2003
    Messages
    219
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 219
    Points : 72
    Points
    72
    Par défaut
    Merci a toi !!

    TU aurai par hasard un exemple concret ?

    Cordialement,

  4. #4
    Membre régulier
    Inscrit en
    Février 2003
    Messages
    219
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 219
    Points : 72
    Points
    72
    Par défaut
    Je vais finalement mettre 3 listes déroulantes.

    Mais faut il rentrer toutes les valeurs dans le code?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <select name="cmbJour" id="cmbJour" >
    	  <option value="01">01</option>
    	  <option value="02">02</option>
    	  <option value="03">03</option>
    ....................
    .............
          </select>
    De même pour le mois et le jour?

    Ou je peux avoir une fonction qui dit : De 1 à 31 on charge, de 1920 à 2006 on charge?

    Merci

  5. #5
    Membre expérimenté
    Avatar de Rakken
    Homme Profil pro
    Inscrit en
    Août 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 257
    Points : 1 341
    Points
    1 341
    Par défaut
    Un indice :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for ($i=1; $i <=31; $i++)
    --
    Rakken

  6. #6
    Membre régulier
    Inscrit en
    Février 2003
    Messages
    219
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 219
    Points : 72
    Points
    72
    Par défaut
    Merci RAKKEN !!!

    Moi de mon côté j'ai fait ca dans un validator
    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
    class ValidateDateNaissance extends Validator { 
        /**  Validation de la longueur du n° de série
        * Private 
        */ 
        var $DateNaissance; 
     
        //! A constructor. 
        /** 
        */ 
        function ValidateDateNaissance ($DateNaissance){ 
            $this->DateNaissance=$DateNaissance; 
            Validator::Validator(); 
        } 
     
        //! A manipulator 
        /** 
        * @return void 
        */ 
        function validate() { 
            list($jour,$ mois, $annee) = explode('/', $this);
    		if(checkdate($mois,$jour,$annee))
    		{ } else 
    		{
                $this->setError('Date de naissance non valide'); 
            } 
        } 
    }
    et ca dans ma page
    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
    if (isset($_POST['cmdEnvoyer'])) {
    	require_once('TestFormulaire_fr.php');
     
     
    	    // Register the subclasses to use 
    	$v['er'] = new ValidateRequired('Nom', $_POST['txtNom']); 
        $v['s']  = new ValidateRequired('Prénom', $_POST['txtPrenom']); 
    	$v['e']  = new ValidateEmail($_POST['txtMail']); 
    	$v['t']  = new ValidateDateNaissance('Date de Naissance', $_POST['txtDateNaissance']);
    	$v['u']  = new ValidateNumClient($_POST['txtNumCli']);
     
        $errorMsg = ''; 
        // Perform each validation 
        foreach($v as $validator) { 
            if (!$validator->isValid()) { 
                while ($error=$validator->getError()) { 
                    $errorMsg.="<li>".$error."</li>\n"; 
                } 
            } 
        } 
        if ($errorMsg != '') { 
            print ("<div style='color:blue'>Les erreurs suivantes se sont produites:\n<ul>".$errorMsg."</ul></div>");
    Mais j'ai toujours une date fausse ?

    Merci

  7. #7
    Membre éprouvé Avatar de FCYPBA
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 745
    Points : 952
    Points
    952
    Par défaut
    Citation Envoyé par Rakken
    Un indice :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for ($i=1; $i <=31; $i++)
    --
    Rakken
    Pourquoi utiliser du temps CPU sur le serveur plutôt que sur le client. Javascript aussi sait faire une boucle for

  8. #8
    Membre éprouvé Avatar de FCYPBA
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 745
    Points : 952
    Points
    952
    Par défaut
    Une petite erreur s'est glissé dans le code de ta méthode validate
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    function validate() { 
            list($jour,$ mois, $annee) = explode('/', $this);
    		if(checkdate($mois,$jour,$annee))
    		{ } else $this->setError('Date de naissance non valide'); 
    		{
     
            } 
        }

  9. #9
    Membre régulier
    Inscrit en
    Février 2003
    Messages
    219
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 219
    Points : 72
    Points
    72
    Par défaut
    Bon je comprend pas !!!

    Ca marche toujours pas !!

    Un problème avec les ; ou {} je pense

    Voilà en j'en suis

    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
    ValidateDateNaissance extends Validator 
    { 
        /**  Validation de la longueur du n° de série
        * Private 
        */ 
        var $DateNaissance; 
     
        //! A constructor. 
        /** 
        */ 
        function ValidateDateNaissance ($DateNaissance)
    	{ 
            $this->DateNaissance=$DateNaissance; 
            Validator::Validator(); 
        } 
     
        //! A manipulator 
        /** 
        * @return void 
        */ 
        function validate() 
    	{ 
            list($jour,$mois, $annee) = explode('/', $this);
    		if(checkdate($mois,$jour,$annee))
    		{ 
    		} 	else 
            {	$this->setError('Date de naissance non valide'); 
            } 
        } 
    }
    Et là, sur ma page qui s'ouvre j'ai uniquement mon fond d'écran.

    Je rappel que j'appel la page validator comme ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $v['t']  = new ValidateDateNaissance('Date de Naissance', $_POST['txtDateNaissance']);
    Merci

  10. #10
    Membre actif
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Décembre 2003
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2003
    Messages : 217
    Points : 242
    Points
    242
    Par défaut
    Citation Envoyé par FCYPBA
    Pourquoi utiliser du temps CPU sur le serveur plutôt que sur le client. Javascript aussi sait faire une boucle for
    Parce que js c'est chiant à utiliser, et que tlm ne l'autorise pas...
    Ce genre de choses, ce n'est pas au javascript de le faire, c'est au php. :-/

  11. #11
    Membre éprouvé Avatar de FCYPBA
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 745
    Points : 952
    Points
    952
    Par défaut
    Citation Envoyé par Sékiltoyai
    Parce que js c'est chiant à utiliser, et que tlm ne l'autorise pas...
    Ce genre de choses, ce n'est pas au javascript de le faire, c'est au php. :-/
    Il y a un an j'aurais eu tendance à penser comme toi. Mais maintenant n'importe quel site, un peu Web 2.0, demande un petit peu de JS. Après tout dépends à quel public est destiné le site.

  12. #12
    Membre actif
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Décembre 2003
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2003
    Messages : 217
    Points : 242
    Points
    242
    Par défaut
    Oui mais cela n'oblige pas à utiliser js à toutes les sauces, les pages sont déjà assez surchargées de scripts comme cela.
    Et pour l'accessibilité c'est la mort. Il faut pensez à des solutions alternatives pour ceux qui désactivent le javascript...

Discussions similaires

  1. Réponses: 4
    Dernier message: 21/07/2009, 18h41
  2. test formulaire
    Par sam01 dans le forum Langage
    Réponses: 4
    Dernier message: 15/02/2006, 23h31
  3. Réponses: 5
    Dernier message: 19/10/2005, 14h56
  4. [Dates] Test sur un champ de formulaire
    Par rdams dans le forum Langage
    Réponses: 4
    Dernier message: 15/09/2005, 16h03
  5. [Date] test de Calendar/Date invalide
    Par rodolphepoulet dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 17/01/2005, 13h49

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