Objectifs de la séance ¶
- Se familiariser avec le langage
PHPen mode Web - Utiliser le serveur Web intégré à
PHP - Produire un contenu
HTMLavec le langagePHPen mode Web - Renforcer la compréhension de la mécanique d'échange
HTTP - Observer des requêtes et réponses
HTTPgrâce aux outils de développement du navigateur - Utiliser les formulaires et en traiter les données avec
PHP - Contrôler la présence de données normalement issues de formulaires
- Utiliser des fonctions
PHP - Utiliser la structure de contrôle
foreach(...) - Écrire des fonctions
Consignes ¶
Ce sujet complémentaire est la suite du TP « Premiers pas en PHP Web ». Les questions seront logiquement traitées dans le même dépôt Git que le sujet principal.
Calendrier ¶
Nous souhaitons obtenir un programme qui produit l'affichage des jours du mois.
- Prenez connaissance des fonctionnalités suivantes qui vous aideront dans votre réalisation :
- Écrivez un programme «
calendrier1.php» qui produit l'affichage des jours du moisInformationVous pouvez utiliser la commande shell
ncalafin de vérifier la génération de vos calendriers.La commande
ncal -b -M 3 2022donne le résultat suivant :ncal -b -M 3 2022 Mars 2022 lu ma me je ve sa di 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 - Vérifiez la validité du code
HTMLproduit et corrigez-le si nécessaire
Fonction calendrier ¶
En partant du programme que vous venez de réaliser, vous allez extraire le code vous permettant de définir une fonction de création du calendrier d'un mois.
- Créez un fichier «
calendrier.function.php» dans lequel vous écrirez la fonction suivante :function calendrier(int $mois, int $annee, bool $afficheAnnee=true): string
- Écrivez le code de la fonction afin qu'elle retourne le calendrier du mois «
$mois» (de 1 à 12) de l'année «$annee» (entier quelconque) dans lequel l'année est insérée ou non en fonction de la valeur de «$afficherAnnee» - Copiez votre programme «
calendrier1.php» en «calendrier2.php» - Modifiez «
calendrier2.php» pour qu'il utilise votre nouvelle fonction «calendrier()» - Vérifiez la validité du code
HTMLproduit et corrigez-le si nécessaire
Formulaire ¶
Votre calendrier du mois serait plus intéressant s'il permettait de choisir le mois et l'année d'intérêt.
- Concevez un programme
PHP«choisir-mois-annee.php» qui produit un formulaire de choix d'un mois et d'une année :- les données sont transmises selon la méthode
GETun programmePHP«calendrier3.php» - la liste déroulante des mois, nommée «
mois», propose à l'utilisateur les mois en toutes lettres en français mais gère des valeurs numériques de 1 à 12 - la liste déroulante des années, nommée «
annee», propose les années par ordre chronologique inverse, de l'année prochaine à 1900 - la saisie de l'utilisateur est rendue obligatoire
- les données sont transmises selon la méthode
- Vérifiez la validité du code
HTMLproduit et corrigez-le si nécessaire - Copiez votre programme «
calendrier2.php» en «calendrier3.php» - Modifiez «
calendrier3.php» pour qu'il utilise fasse usage des données transmises par le formulaire selon la méthodeGET:- la présence des données transmises est vérifiée avec «
isset()» - la forme des données transmises est vérifiée avec les fonctions «
Ctype» - les valeurs admissibles des données transmises sont scrupuleusement vérifiées
- en cas de valeurs incohérentes, les valeurs par défaut du mois courant et de l'année courante sont utilisées
- le calendrier est généré à l'aide de la fonction «
calendrier()»
- la présence des données transmises est vérifiée avec «
- Vérifiez la validité du code
HTMLproduit et corrigez-le si nécessaire
Formulaire et paramètres d'URL, (re)découverte ¶
Votre nouveau calendrier du mois peut être interrogé par un formulaire qui permet de choisir le mois et l'année. Revenons sur les détails du principe.
- Observez les paramètres d'URL produits par votre précédent formulaire lorsque «
calendrier3.php» est demandé au serveur :calendrier3.php?mois=8&annee=2000
- Modifiez manuellement ces paramètres afin de modifier le mois ou l'année. Vous constatez l'inutilité de votre contrôle de formulaire pour ce type de modification…
- Modifiez à présent manuellement les paramètres afin de donner des valeurs invalides pour le mois et/ou l'année
- Vérifiez que le contrôle des paramètres est suffisamment robuste
Formulaire et paramètres d'URL, mise en pratique ¶
Vos observations ont mis en évidence que l'utilisation d'un formulaire utilisant la methode GET conduit à la construction d'une URL comportant une « query string » contenant la saisie de l'utilisateur. Vous allez exploiter ce principe et construire vous-même des URL avec une « query string » contenant des paramètres pour proposer des hyperliens vers le mois précédent et le mois suivant.
- Copiez votre programme «
calendrier3.php» en «calendrier4.php» - Modifiez «
calendrier4.php» pour construire des hyperliens permettant de conduire au mois précédent et suivant - Placez ces hyperliens de part et d'autre de votre calendrier en utilisant vos connaissances du modèle « flexbox »
- Vérifiez que le bon fonctionnement de l'ensemble
Calendrier de l'année ¶
Votre fonction de création du calendrier d'un mois est réutilisable et vous allez en profiter pour construire le calendrier de l'année en cours.
- Copiez votre programme «
calendrier2.php» en «calendrier-annee1.php» - Modifiez «
calendrier-annee1.php» pour qu'il produise le calendrier de l'année en coursInformationVous pouvez utiliser la commande shell
ncal -b -M 2022afin de vérifier la génération de votre calendrier de l'année. - Vérifiez la validité du code
HTMLproduit et corrigez-le si nécessaire
Calendrier de l'année et des jours fériés ¶
Votre calendrier serait bien plus utile s'il comportait les jours fériés français.
- Copiez votre programme «
calendrier-annee1.php» en «calendrier-annee2.php» - Copiez votre programme «
calendrier.function.php» en «calendrier2.function.php» - Modifiez «
calendrier-annee2.php» pour qu'il utilise «calendrier2.function.php» - Dans «
calendrier2.function.php», créez la fonction «jourFerie(int $jour, int $mois, int $annee): bool» retourne vrai pour :InformationVous pouvez déterminer la date de Pâques manuellement ou utiliser la fonction «
easter_date()» dePHP. - Modifiez votre fonction «
calendrier()» afin qu'elle utilise la fonction «jourFerie()» - Vérifiez la validité du code
HTMLproduit et corrigez-le si nécessaire