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

PHP & Base de données Discussion :

Validation date FR [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Février 2012
    Messages
    199
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 199
    Points : 71
    Points
    71
    Par défaut Validation date FR
    Bonjour,

    J'ai essayé un peu toute sorte de trucs et regardé sur le net (checkdate, regex etc)mais je n'arrive pas à adapter tous ça dans mon exemple. Dans mon code ci-dessous, j'aimerais pouvoir vérifier si la date rentrée par l'utilisateur via un input est valide, format français.

    Pouvez-vous m'éclairer ?

    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
     
     
    if(isset($_POST['rechercherDateAppel']) AND isset($_POST['fonctionDateAppel'])
                                AND !empty($_POST['fonctionDateAppel'])){
                                $fonctionDateAppel=$_POST['fonctionDateAppel'];
                                $afficheDateAppel = $bdd->prepare("SELECT numAppel,heureAppel,raisonAppel,dureeAppel,
                                                                suiteAppel,nomPrenomAppelant,commentaire, 
                                                                DAY(dateAppel) AS jour, MONTH(dateAppel) AS mois, YEAR(dateAppel) AS annee
                                                                FROM appels WHERE dateAppel='".$fonctionDateAppel."'
                                                                ORDER BY numAppel DESC");
                                $afficheDateAppel->execute();
                            if ($afficheDateAppel->rowCount() == 0) {
                                echo '<script type="text/javascript">alert("Aucun résultat ou date invalide : vérifiez le format souhaité (AAAA-MM-JJ) !");</script>';
                            }
                            else
                            {
                                while ($donnees = $afficheDateAppel->fetch())
                                {
                                $afficheFonctionDateAppel = array (
                                '<tr>Appel datant du '.$donnees['jour'] . '/' . $donnees['mois'] . '/' . $donnees['annee'].'',
                                'Numéro de l\'appel : '.$donnees['numAppel'].'',
                                'Heure de l\'appel : '.$donnees['heureAppel'].'',
                                'Raison de l\'appel : '.$donnees['raisonAppel'].'',
                                'Durée de l\'appel : '.$donnees['dureeAppel'].'',
                                'Suite de l\'appel : '.$donnees['suiteAppel'].'',
                                'Collaborateur : '.$donnees['nomPrenomAppelant'].'',
                                'Commentaire : '.$donnees['commentaire'].'</tr><br />');
                                foreach($afficheFonctionDateAppel as $element)
                                {
                                    echo $element.'<br />';
     
                                }    
                                }
                                    $afficheDateAppel->closeCursor(); // Termine le traitement de la requête
                            }
                        }

  2. #2
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    As-tu cherché sur le web ? Je suis sûr qu'il existe des fonctions et/ou classes pour vérifier et manipuler les dates, en PHP et/ou en Javascript.

    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Février 2012
    Messages
    199
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 199
    Points : 71
    Points
    71
    Par défaut
    Oui, comme je l'ai indiqué j'ai cherché mais j'arrive pas à adapter dans mon exemple! tanpis je vais continuer à chercher

  4. #4
    Membre éclairé Avatar de ledisciple
    Homme Profil pro
    observateur de nuage niveau 2.3
    Inscrit en
    Août 2008
    Messages
    860
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : observateur de nuage niveau 2.3

    Informations forums :
    Inscription : Août 2008
    Messages : 860
    Points : 723
    Points
    723
    _____________________________________________
    Tours Football Club - Turonorum Civitas Libera

    Content pas content de ma réponse? N'hésitez pas votez !!

  5. #5
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Tu as trouvé une fonction PHP mais que lui donnes-tu à analyser si l'utilisateur tape "01-03-2011" ou même "12345678" ?

    Je n'ai jamais cherché moi même mais je suis sûr qu'il existe une classe ou une fonction qui prend n'importe quelle châine de caractères ou de nombres et qui l'analyse pour déterminer si ça peut être interprété comme une date.

    Dans l'idée, il faut analyser la chaîne entrée avec une expression régulière pour éliminer les entrées composées exclusivement de caractères alphabétiques puis chercher s'il y a des groupes de chiffres séparés par un caractère (/ - espace) puis vérifier avec checkdate en lui donnant les groupes de chiffres.

    Maintenant, comme ça vient d'un formulaire de saisie, il serait aussi malin d'agrémenter le formulaire d'un composant Javascript de calendrier.

    Un coup de avec "composant javascript calendrier" te donne pas mal de liens parmi lesquels tu devrais trouver ton bonheur.

    Une fois ceci fait, vérifie le format de date sorti du composant avant de le donner à la requête SQL et utilise si nécessaire la fonction MySQL STR_TO_DATE dans la requête d'interrogation.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  6. #6
    Membre éclairé Avatar de ledisciple
    Homme Profil pro
    observateur de nuage niveau 2.3
    Inscrit en
    Août 2008
    Messages
    860
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : observateur de nuage niveau 2.3

    Informations forums :
    Inscription : Août 2008
    Messages : 860
    Points : 723
    Points
    723
    Par défaut
    Citation Envoyé par CinePhil Voir le message
    Tu as trouvé une fonction PHP mais que lui donnes-tu à analyser si l'utilisateur tape "01-03-2011" ou même "12345678" ?
    Tu sépares les jours, les mois et les années en 3 champs différents. Comme ça tu peut faire une vérification sur chaque partie de la date et retourner une erreur "personnalisée"

    Citation Envoyé par CinePhil Voir le message
    Dans l'idée, il faut analyser la chaîne entrée avec une expression régulière pour éliminer les entrées composées exclusivement de caractères alphabétiques puis chercher s'il y a des groupes de chiffres séparés par un caractère (/ - espace) puis vérifier avec checkdate en lui donnant les groupes de chiffres.
    Il y a bien 3 paramètres à entrer? Il lui faudra, s'il utilise qu'un seul champ découper sa chaine de caractère avec explode
    Citation Envoyé par CinePhil Voir le message
    Maintenant, comme ça vient d'un formulaire de saisie, il serait aussi malin d'agrémenter le formulaire d'un composant Javascript de calendrier.

    Un coup de avec "composant javascript calendrier" te donne pas mal de liens parmi lesquels tu devrais trouver ton bonheur.
    http://www.developpez.com/recherche/...ez.com%2F&ref=
    _____________________________________________
    Tours Football Club - Turonorum Civitas Libera

    Content pas content de ma réponse? N'hésitez pas votez !!

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Février 2012
    Messages
    199
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 199
    Points : 71
    Points
    71
    Par défaut
    Merci à tous pour vos infos, je vais voir ça je vous redis

  8. #8
    Membre éprouvé Avatar de redoran
    Homme Profil pro
    Développeur-Amateur
    Inscrit en
    Juin 2010
    Messages
    1 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur-Amateur
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 346
    Points : 1 031
    Points
    1 031
    Par défaut
    Salam ;
    j'aimerais pouvoir vérifier si la date rentrée par l'utilisateur via un input est valide, format français.
    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
     
    <?php
    .....
    <input type="text" name="datedec" value="" placeholder="JJ/MM/AAAA" size="10" maxlength="10" id="datedec" />
     
    ...........
     
    // utilisation de regex pour vérifier
     
                                                 // ici en verifier le format JJ/MM/AAAA
    if ( empty($_POST['datedec']) || !preg_match('#^([0-9]{2})/([0-9]{2})/([0-9]{4})$#', $_POST['datedec']))
    			{
    			$erreurs_msg['datevide'] = 'Veuillez saisir une date valide SVP.'; 
     
    			}    // ici on vérifier la validité de la date exemple 30/02/2011 sa passe pas 
    		elseif (preg_match("#^([0-9]{2})/([0-9]{2})/([0-9]{4})$#", $_POST['datedec'],$date) && !checkdate($date[2], $date[1], $date[3])) 
    			{
    			$erreurs_msg['daterron'] = 'Date non valide.';	
    			}
     
     
    ?>
    code travaillé dans mon post avec l'audience du forum merci

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Février 2012
    Messages
    199
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 199
    Points : 71
    Points
    71
    Par défaut
    J'ai regardé pour un datepicker mais n'y connaissant rien en jquery je laisse tomber j'aurais pas le temps, j'ai essayé à nouveau avec checkdate comme ci-dessous :

    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
     
     
    if(isset($_POST['rechercherDateAppel']) AND isset($_POST['fonctionDateAppel'])
                                AND !empty($_POST['fonctionDateAppel'])){
                                $fonctionDateAppel=$_POST['fonctionDateAppel'];
                                $afficheDateAppel = $bdd->prepare("SELECT numAppel,heureAppel,raisonAppel,dureeAppel,
                                                                suiteAppel,nomPrenomAppelant,commentaire, 
                                                                DAY(dateAppel) AS jour, MONTH(dateAppel) AS mois, YEAR(dateAppel) AS annee
                                                                FROM appels WHERE dateAppel='".$fonctionDateAppel."'
                                                                ORDER BY numAppel DESC");
                            if (checkdate($_POST['mois'], $_POST['jour'], $_POST['annee'])){
                                $afficheDateAppel->execute();
                                while ($donnees = $afficheDateAppel->fetch())
                                {
                                $afficheFonctionDateAppel = array (
                                '<tr>Appel datant du '.$donnees['jour'] . '/' . $donnees['mois'] . '/' . $donnees['annee'].'',
                                'Numéro de l\'appel : '.$donnees['numAppel'].'',
                                'Heure de l\'appel : '.$donnees['heureAppel'].'',
                                'Raison de l\'appel : '.$donnees['raisonAppel'].'',
                                'Durée de l\'appel : '.$donnees['dureeAppel'].'',
                                'Suite de l\'appel : '.$donnees['suiteAppel'].'',
                                'Collaborateur : '.$donnees['nomPrenomAppelant'].'',
                                'Commentaire : '.$donnees['commentaire'].'</tr><br />');
                                foreach($afficheFonctionDateAppel as $element)
                                {
                                    echo $element.'<br />';
                                }    
                                }
                            }
                            else
                            {
                                echo "Date invalide !";
                            }    
                            if ($afficheDateAppel->rowCount() == 0) {
                                echo '<script type="text/javascript">alert("Aucun résultat !");</script>';  
                            }
                        }
    ...et quand je rentre une date format français, ou bien anglais -->> j'ai mon script alert (aucun résultat) qui s'affiche puis le "Date invalide !". C'est bien dans la fonction checkdate le mois avant le jour ?

  10. #10
    Membre éprouvé Avatar de redoran
    Homme Profil pro
    Développeur-Amateur
    Inscrit en
    Juin 2010
    Messages
    1 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur-Amateur
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 346
    Points : 1 031
    Points
    1 031
    Par défaut
    Re ; j'ai t donné la solution toute prête.
    d'après ma connaissance je crois que la vérification de la date se fait lors de la soumission de la date si la date est valide alors tu lance ta requête sinon un message de validation de date et non le contraire.

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Février 2012
    Messages
    199
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 199
    Points : 71
    Points
    71
    Par défaut
    ok merci, j'avais pas compris que c'était pour moi le code que tu as mis, je pensais que c'était un code à toi...que les postes de ce sujet t'avaient permis de réaliser ce code.

  12. #12
    Membre éprouvé Avatar de redoran
    Homme Profil pro
    Développeur-Amateur
    Inscrit en
    Juin 2010
    Messages
    1 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur-Amateur
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 346
    Points : 1 031
    Points
    1 031
    Par défaut
    j'avais pas compris que c'était pour moi le code que tu as mis, je pensais que c'était un code à toi...que les postes de ce sujet t'avaient permis de réaliser ce code.

    j'avais le même problème et je l'ai résolu avec l'audience du forum comme cidessus Ok.
    ta input et comment vérifier la validité de la date ( format et contenu) donc c'est a toi de l'adapté selon tes besoin.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. regexp de validation date et heure
    Par PoichOU dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 04/01/2012, 10h36
  2. Utiliser validates date time plugin
    Par Javix dans le forum Ruby on Rails
    Réponses: 1
    Dernier message: 22/01/2009, 16h24
  3. [E-00] Validation date : bug Excel 2000 ?
    Par Australia dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 21/01/2009, 10h01
  4. validation date en fonction de la locale
    Par Watier_53 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 22/10/2008, 10h20
  5. modification formulaire + validation date
    Par cari dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 20/01/2006, 09h43

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