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 ?
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 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 ...
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.
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.
× 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.
N'oubliez pas d'activer les erreurs PDO.
N'oubliez pas d'activer les erreurs PDO.