Je ne pense pas qu'il soit possible de rendre facultatif les listes de choix pour le mois et le jour. D'ailleurs, tu noteras que c'est le champ complet qui est requis ou non, et pas une de ses parties, ce qui implique une validation sur la date entière. Or, une année n'est pas une date (pas plus qu'un mois, mais passons), donc la validation ne passera pas.
La solution que je verrais là tout de suite serait de faire ton propre type de champ qui pourrait ainsi s'afficher presque comme le type Date, mais il n'y aurait pas la validation et tu pourrais ainsi avoir tes dates partielles.
mais bon niveau possibilité dans le navigateur étant de type number je peux mettre tout chiffre le 50 décembre 2000, quand c'est faux l'envoi se fait mais le résultat en bdd est 0000-00-00
---------------------------------------
J'ai testé sur Symfony
j'ai créé 3 variables non ORM jn mn an (jour naissance mois naissance année naissance)
Tu peux mettre des listes de choix, ce qui limiterait déjà à 31 jours, et si tu as trois valeurs, valider la date avec date_create(), fonction qui a le relatif avantage sur la construction d'un objet qu'elle retourne false si la valeur n'est pas bonne plutôt que de jeter une exception.
Mais j'ai vaguement l'impression de faire un bref voyage dans le temps, mettons de quatre mois environ. On ne serait pas à un jour près
Mais du coup, je vais me répéter : une date avec uniquement des zéros pour un des composants (ou pour tous) n'est PAS valide. Soit tu enregistres les trois parties séparément, soit tu convertis en quelque chose de valide que tu contrôles, soit tu laisses MySQL faire comme il l'entend.
oui je relance le sujet il y a 4 mois j'avais laissé tomber, je m'y remets et pourtant j'ai testé hier en procédural me disant que mon idée n'est pas si mauvaise la preuve que ça fonctionne mais sur symfony les fonctions sur les dates posent trop de contraintes, une des solutions mais qui va poser d'autres problèmes est de définir son propre format de date qui sous entend trop de conditions
encore le mois il n'y en a que 12 et ça ne changera pas mais les jours ... 3 possibilités dont une qui change tous les 4 ans donc croisement avec les années aussi
je vais voir avec date_create(), il suffit seulement que le zéro passe
---
pour répondre à ton edit, oui 4 mois tu as une horloge dans la tête
et je comprends ce que tu répètes ce qui me fruste c'est qu'en procédural je peux avoir des zéros
la différence ici lors de l'envoi ça change toute la date
- Edité par PierreRichard78 17 octobre 2020 à 0:11:00
Je doute sincèrement que ta base de données accepte une date 2020-00-16 ou même 2020-05-00 sans que ce soit converti en autre chose pour l'enregistrement. Il reste donc bien la possibilité d'enregistrer les trois valeurs séparément, tout en appuyant que valider une année c'est très simple, une année et un mois c'est possible aussi, une année et un jour dans celle ci pareil en fait (YYYY-DDD, le jour obligatoirement sur 3 chiffres donc un peu de calcul peut être nécessaire), mais pour PHP déjà ce sera converti en une date, et je ne serais pas surpris que pour MySQL aussi avec une colonne de type date si tu arrives à lui faire manger ces formats.
Ce n'est pas phpMyAdmin que tu paramètres, mais MySQL. phpMyAdmin est juste une interface qui permet d'y accéder.
Non, Symfony ne propose rien d'autre pour manipuler des dates. Mais tu peux les manipuler comme de simples chaînes de caractères, voire un tableau que Doctrine pourrait enregistrer au format JSON.
Pourquoi souhaites-tu à tout prix enregistrer au format DATETIME des choses qui n'en sont pas vraiment ? Et as-tu vraiment besoin de la partie TIME ? Quel est ton besoin ?
De toute manière tu vas devoir valider les parties comme l'entiereté de la date selon ce qui est fourni, rien n'est prévu pour ça. En ce qui me concerne, j'enregistrerais un tableau des parties de la date sinon chaque partie séparément dans des propriétés ad-hoc
Ton besoin est technique, j'aimerais le besoin client
La date incomplète, elle va servir à faire des calculs d'âge, ou d'autres calculs ? Ceux-ci se doivent d'être précis ?
Parce que j'aurais envie de dire que si l'utilisateur ne saisit qu'une année, pour suivant quels calculs, enregistrer le premier janvier n'est pas forcément un problème, pareil pour la saisie d'une année et d'un mois qui deviendrait le premier du mois. Quand à savoir le jour d'un mois mais pas lequel ni l'année, je ne suis pas certain que ce soit super pertinent…
non ce n'est pas pour calculer l'âge, c'est juste un complément d'informations mais qui n'est pas forcément total.
l'idée du premier du mois est bien sauf que des gens naissent le premier du mois donc pas bon pour la fonction
Je crois qu'au final pas le choix, 3 champs en BDD auxquels après je vais un peu m'embêter à respecter les dates
je classe les mois par nombre de jours. janvier mars mail juillet août octobre décembre = 31 jours
avril juin septembre novembre = 30 jours
et février = 28 ou 29
avec ajax j'appelle le tableau des jours en fonction du mois sélectionné mais par contre la logique est de faire année mois jour, à l'envers de ce qu'on connait en france
la chance sourit aux audacieux
problème d'acceptation de date incomplète
× 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.
la chance sourit aux audacieux
la chance sourit aux audacieux
la chance sourit aux audacieux
la chance sourit aux audacieux
la chance sourit aux audacieux
la chance sourit aux audacieux
la chance sourit aux audacieux
la chance sourit aux audacieux