Partage
  • Partager sur Facebook
  • Partager sur Twitter

format date différent formulaire/bdd

    13 novembre 2017 à 18:52:45

    Bonsoir à toutes et tous,

    1/ Mon contexte :

    Je viens de créer un formulaire à 3 input que l'utilisateur remplira pour spécifier sa sélection.

    Parmi ces 3 champs figure un champs "date", celle-ci est récupérée via un choix dans un "datepicker" javascript.

    Dans un souci de clarté j'ai configuré le datepicker de façon à ce que la date s'affiche de la manière suivante:

                                                          " lundi 13 novembre 2017"

    2/ Ma problématique :

    une fois les 3 champs remplis et validés par le submit j'ai crée une requête SELECT qui va interroger ma BDD, celle-ci dispose d'un champs "date" au format "YYYY -MM -DD" affichant 2017-11-13. Comment se fait la comparaison entre 2 dates identiques mais de format différents ?

    Comment définir une requête mysql spécifiant que les réponses retournées prendront en compte que le  "lundi 13 novembre 2017" du formulaire correspond au "2017-11_13" de la BDD ?

    Merci pour vos lumières !

    -
    Edité par newrone 13 novembre 2017 à 18:58:35

    • Partager sur Facebook
    • Partager sur Twitter
      13 novembre 2017 à 21:42:59

      Bonjour,

      Tu tiens vraiment à ce format ?
       Si tu te contentes de 13/11/2017, php pourra le parser.

      • Partager sur Facebook
      • Partager sur Twitter
        13 novembre 2017 à 22:49:18

        Bonsoir,

        oui je tiens à ce que le jour de la semaine apparaisse en clair au moment de la sélection de la date pour l'utilisateur, pour le confort d'utilisation.

        - Par contre si dans la requête  il y a un un bout de code qui permet de mettre  la date dans un format "parsable" je suis preneur.

        - Ou alors un champs hidden dans le formulaire au format 13/11/2017 qui soit utilisé pour la requête.

        Je ne sais pas comment gérer le machin :-).

        Merci pour ton aide.

        • Partager sur Facebook
        • Partager sur Twitter
          14 novembre 2017 à 9:17:04

          Bonjour,

          Je ne pense pas que ce soit un problème SQL ... Enfin pas principalement ...

          Dans ta base de données, quel est le type de la colonne contenant la date ? DATE ? DATETIME ? VARCHAR ?

          Si tu travailles en PHP, avec PDO, pour interroger ta base, tu vas construire ta requête ainsi :

          SELECT *
          FROM maTable
          WHERE maDate = '2017-11-13'

          Avec la valeur de date, bien évidemment variable issue de ton formulaire.

          Tu as donc 2 possibilités :

          Une en JavaScript qui consiste à définir un format d'affichage de la date différent du format stocké comme valeur de l'input. En gros il affiche "Lundi 13 novembre 2017", mais transmet "2017-11-13" dans $_POST. Je ne sais pas quel plugin DatePicker tu utilises et si cela est faisable avec ...

          Une en PHP qui consiste à parser "Lundi 13 novembre 2017" comme une date et à passer "2017-11-13" à ta requête préparée. Tu pourrais t'en sortir avec https://secure.php.net/manual/fr/datetime.createfromformat.php et/ou http://php.net/manual/fr/function.strtotime.php

          • Partager sur Facebook
          • Partager sur Twitter
          Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
            14 novembre 2017 à 9:34:37

            Je pense que la valeur d'affichage de datepicker est la valeur transmise, à moins de retravailler la date en javascript et de la transmettre avec un input hidden... mais à ce moment là ce serait plus simple de traiter en php. Il faudra juste faire un tableau de correspondance pour les mois en français pour parser la date.

            Personnellement, je resterais sur une date format 14/11/2017 qui est directement parsable avec la classe DateTime, mais rien d'impossible avec un explode.

            • Partager sur Facebook
            • Partager sur Twitter
              14 novembre 2017 à 11:23:45

              Bonjour Benzouye,

              tout d'abord merci pour ta réponse,

               1- le type de mon champs date dans ma BDD est DATE dans un format YYYY-MM-DD.

               2- Dans ma requête je passe la valeur de la variable sélectionnée pour la date ($_POST)

              3- s'agissant du DatePicker voici le code :

              <script>
                  $(function() {
                  $( "#datepicker" ).datepicker({
                  altField: "#datepicker",
                  closeText: 'Fermer',
                  prevText: 'Précédent',
                  nextText: 'Suivant',
                  currentText: 'Aujourd\'hui',
                  monthNames: ['Janvier', 'Février', 'Mars', 'Avril', 'Mai', 'Juin', 'Juillet', 'Août', 'Septembre', 'Octobre', 'Novembre', 'Décembre'],
                  monthNamesShort: ['Janv.', 'Févr.', 'Mars', 'Avril', 'Mai', 'Juin', 'Juil.', 'Août', 'Sept.','Oct.', 'Nov.', 'Déc.'],
                  dayNames: ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi'],
                  dayNamesShort: ['Dim.', 'Lun.', 'Mar.', 'Mer.', 'Jeu.', 'Ven.', 'Sam.'],
                  dayNamesMin: ['D', 'L', 'M', 'M', 'J', 'V', 'S'],
                  weekHeader: 'Sem.',
                  dateFormat: 'le DD dd MM yy'
                  });
                  });

                </script>

              Je vais consulter les liens que tu m'as donnés et tester, il n'y a que ça de vrai !!!

              bonne journée à toi.

              -
              Edité par newrone 14 novembre 2017 à 11:28:21

              • Partager sur Facebook
              • Partager sur Twitter
                14 novembre 2017 à 11:56:39

                newrone a écrit:

                le type de mon champs date dans ma BDD est DATE dans un format YYYY-MM-DD

                Petite précision, un champ date n'a pas vraiment ce format en base ... il s'affiche ainsi, mais n'est pas stocké ainsi ... Par défaut MySQL parse une chaîne au format yyyy-mm-dd et la transforme en type DATE.

                newrone a écrit:

                s'agissant du DatePicker voici le code

                C'est le datePicker de jQuery, et je pense que philodick a raison, le format d'affichage sera forcément le même que celui transmis dans l'input.

                Donc soit tu changes le format du datePicker pour mettre directement le format par défaut de MySQL ("yy-mm-dd" pour jQuery), soit tu veux absolument conserver "le DD dd MM yy", et il va falloir te débrouiller côté PHP, pour traiter la valeur de $_POST[...] ...

                Mais je ne suis pas convaincu que ce soit réellement intéressant, tu vas t'embêter à explode / traduire ... au pire, ergonomiquement parlant, tu pourrais ajouter un élément à côté de l'input affichant le texte voulu et conserver un format "standard" dans ton input.

                • Partager sur Facebook
                • Partager sur Twitter
                Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL

                format date différent formulaire/bdd

                × 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