Comment faire une belle “date picker” en PHP?
Je suis en train de faire quelques tests avec MySQL et PHP, et je suis curieux à propos de la création d'un gentil "date picker", par exemple, choisir la date 2010-11-11 (la date d'aujourd'hui).
Je veux stocker DATETIME valide les valeurs dans ma base de données MySQL, et je veux une page PHP pour fournir les listes de rolling pour année, mois et jour (par exemple 2010-11-11) afin d'éviter de forcer l'utilisateur à écrire dans les dates manuellement dans un formulaire et le faire vérifier.
Ma question est, disons, l'utilisateur choisit la date 2010-11-31 (qui n'existe pas); comment puis-je créer la simple roulement des listes de manière à ajuster dynamiquement? C'est, d'ABORD à l'utilisateur choisit de l'année, puis le mois et enfin le jour (ce qui est dynamiquement modifié pour accueillir le nombre réel de jours dans un mois donné). Espérons que les années bissextiles seront également pris en charge. Après la cueillette de tous et que l'utilisateur appuie sur soumettre, le script va présenter correctement formaté valeur de type DATETIME à la base de données (ex: YYYY-MM-DD, ou AAAAMMJJ).
Que ce que j'ai compris, le type DATETIME est stricte que la norme, sens le serveur va garder la trace des dates non valides, ce qui devrait être assez facile d'erreur de vérification. Mais je veux éviter cela en faisant ce que j'ai décrit ci-dessus.
Diriez-vous de mes décrit "solution" est facile à mettre en œuvre en utilisant uniquement PHP (et MySQL)? Ou aurais-je besoin de quelques autres trucs (par exemple, AJAX/JavaScript, JQuery etc.) pour gérer cela? Toutes les suggestions et conseils sont les bienvenus, en particulier, des approches alternatives pour le même problème qui peut être plus facile à mettre en œuvre. Merci à l'avance!
- Comme Pekka dit, vous ne pouvez pas faire un sélecteur de date avec "juste PHP', parce que le PHP est "juste" sur le serveur, et votre nom d'utilisateur sur le navigateur/client.
Vous devez vous connecter pour publier un commentaire.
Il y a beaucoup de JavaScript calendrier widgets déjà là. Si vous ne cherchez pas à le faire à des fins d'apprentissage, pas de raison de réinventer la roue.
La validation côté serveur est bien sûr toujours obligatoire, mais les widgets, il sera impossible pour l'utilisateur de sélectionner une date non valide dans des circonstances normales.
E. g.
Que vous essayez de résoudre un problème côté client côté serveur ici, à mon humble avis, même si la validation ne peut jamais être omis côté serveur.
Mais des dates non valides, comme votre exemple, ne sont vraiment pas un problème, vous pouvez utiliser
strtotime
qui mange le plus de dates bien. Bien sûr, dans ce cas, il faudra évaluer au 1er décembre, mais une date valide de toute façon. Vous pouvez utiliser la sortie destrtotime
avecdate
de format dans une base de données de manière conviviale.De prendre cela un peu plus loin, si vous voulez vous assurer que la date d'entrée n'est pas seulement formellement valide, vous pouvez l'analyser en utilisant
strtotime
, format à l'aide dedate
dans le format qui a été envoyé à votre script et de comparer les deux chaînes. Si non identique, vous savez que quelque chose clochait.Que par votre exemple:
Vous pourriez également être intéressé par le
DateTime
classe fourni avec les versions récentes de PHP.Il devrait y avoir aucun besoin de l'Ajax. Les appels Ajax vers le serveur, mais le serveur ne sait pas plus au sujet de dates de validité que le client n', donc cela peut être fait en javascript. Si vous êtes déjà à l'aide de jQuery, utiliser le plugin jQuery, mais ne pas charger l'intégralité de la bibliothèque jQuery juste pour cela: c'est overkill. Il y a beaucoup de léger datepickers. Tout ce que vous voulez faire est de recharger les jours disponibles quand quelqu'un change le mois et l'année (souvenez-vous de février: vous devez recharger sur l'exercice variation de trop).
Nous avez fait avec une méthode qui inclut le nom du jour de la semaine aux côtés de la date:
Voir http://www.mattkruse.com/javascript/calendarpopup/ pour une approche différente, qui affiche un calendrier. Il est possible d'intégrer les deux, de l'alimentation les résultats de la popup calendrier de retour dans les fenêtres.
Rappelez-vous que les gens peuvent désactiver javascript et de faire toutes sortes de choses bizarres sur le côté client, donc la validation côté serveur encore des questions.
jQuery et un autre frameworks JavaScript sont présentes, ce qui devrait faire le travail.
Vous ne pouvez pas. Vous aurez besoin d'un client-side solution.
PHP traite de traitement de données, alors vous pourriez avoir un JavaScript-alimenté date-picker où l'utilisateur sélectionne la date, et alors que vous auriez PHP enregistrer que de la date sélectionnée en dire, une base de données, sur présentation d'un formulaire.