Cette ressource est un champ date qui se présente sous la forme habituelle de trois listes déroulantes: jour, mois, année. Elle est conçue pour être utilisée dans un formulaire en création/modification. Comme il s'agit d'une classe, chaque date est un objet, donc cette ressource peut être utilisée facilement pour des champs date multiples dans un formulaire. L'objet date est instancié par une instruction du type:

ListeDate::main("date", "year", "month", "day", "id_years", "id_months", "id_days", $lg);

"date" : nom du champ date enregistré au format SQL (s'il existe déjà);
"year", "month", "day" : noms (attribut name) de chaque champ composant le champ date;
"id_years", "id_months", "id_days" : identification (attribut "id") de chaque champ composant le champ date;
$lg (booléen) : langue choisie pour le champ date et les messages d'erreur; $lg = true pour le français; $lg = false pour l'anglais.

La méthode constructeur comprend l'instruction pour récupérer éventuellement une date existante au format SQL AAAA-MM-JJ, par exemple en provenance d'un autre script ($_REQUEST), et la date en provenance du script lui-même (PHP_SELF: $_POST).

Les tests de validation peuvent être réalisés de deux façons:

1°) en PHP, par la méthode statique valid_date(), ce qui impose un rechargement de la page;

2°) en JavaScript non intrusif: avec le script "validation.js". C'est évidemment la méthode recommandée, puisque le contrôle se fait sur la machine client, et que le PHP_SELF n'est donc pas obligatoire. Toutefois, le test en PHP peut être utile dans le cas d'utilisateurs ayant désactivé JavaScript (on pourrait par exemple accéder à un test de validation PHP entre deux balises "noscript").

Le script go1_dates.php utilise la classe avec un test en PHP, et le script go2_dates.php avec un test en JavaScript. Ces deux modèles de code peuvent très facilement s'intégrer dans un formulaire comprenant d'autres éléments.

Le zip contient: la classe principale, le script de validation JavaScript, et les deux modèles d'utilisation (avec validation en PHP et en JavaScript).

La fonction split() utilisée dans la version 1.0, et qui est devenue obsolète depuis la sortie de PHP 5.3.0, a été remplacée par la fonction explode() dans la version 1.01.