Jérôme Cutrona

Version statique de l'intranet de Jérôme Cutrona - Rejoindre la version dynamique 🔒

Les exemples et corrections sont potentiellement non fonctionnels.

B.U.T. Informatique - IUT de Reims - Université de Reims

Premiers pas en PHP Web - Sujet complémentaire

Navigation

Objectifs de la séance

  • Se familiariser avec le langage PHP en mode Web
  • Utiliser le serveur Web intégré à PHP
  • Produire un contenu HTML avec le langage PHP en mode Web
  • Renforcer la compréhension de la mécanique d'échange HTTP
  • Observer des requêtes et réponses HTTP grâ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. Calendrier du mois

Travail à réaliser
  1. Prenez connaissance des fonctionnalités suivantes qui vous aideront dans votre réalisation :
  2. Écrivez un programme « calendrier1.php » qui produit l'affichage des jours du mois
    Information

    Vous pouvez utiliser la commande shell ncal afin de vérifier la génération de vos calendriers.

    La commande ncal -b -M 3 2022 donne 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          
  3. Vérifiez la validité du code HTML produit 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.

Travail à réaliser
  1. Créez un fichier « calendrier.function.php » dans lequel vous écrirez la fonction suivante :
    function calendrier(int $mois, int $annee, bool $afficheAnnee=true): string
  2. É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 »
  3. Copiez votre programme « calendrier1.php » en « calendrier2.php »
  4. Modifiez « calendrier2.php » pour qu'il utilise votre nouvelle fonction « calendrier() »
  5. Vérifiez la validité du code HTML produit 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. Choix d'un mois et d'une année

Travail à réaliser
  1. Concevez un programme PHP « choisir-mois-annee.php » qui produit un formulaire de choix d'un mois et d'une année :
    1. les données sont transmises selon la méthode GET un programme PHP « calendrier3.php »
    2. 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
    3. la liste déroulante des années, nommée « annee », propose les années par ordre chronologique inverse, de l'année prochaine à 1900
    4. la saisie de l'utilisateur est rendue obligatoire
  2. Vérifiez la validité du code HTML produit et corrigez-le si nécessaire
  3. Copiez votre programme « calendrier2.php » en « calendrier3.php »
  4. Modifiez « calendrier3.php » pour qu'il utilise fasse usage des données transmises par le formulaire selon la méthode GET :
    1. la présence des données transmises est vérifiée avec « isset() »
    2. la forme des données transmises est vérifiée avec les fonctions « Ctype »
    3. les valeurs admissibles des données transmises sont scrupuleusement vérifiées
    4. en cas de valeurs incohérentes, les valeurs par défaut du mois courant et de l'année courante sont utilisées
    5. le calendrier est généré à l'aide de la fonction « calendrier() »
  5. Vérifiez la validité du code HTML produit 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.

Travail à réaliser
  1. 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
  2. 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…
  3. Modifiez à présent manuellement les paramètres afin de donner des valeurs invalides pour le mois et/ou l'année
  4. 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. Calendrier du mois avec liens de navigation vers le mois suivant et le mois précédent

Travail à réaliser
  1. Copiez votre programme « calendrier3.php » en « calendrier4.php »
  2. Modifiez « calendrier4.php » pour construire des hyperliens permettant de conduire au mois précédent et suivant
  3. Placez ces hyperliens de part et d'autre de votre calendrier en utilisant vos connaissances du modèle « flexbox »
  4. 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. Calendrier de l'année

Travail à réaliser
  1. Copiez votre programme « calendrier2.php » en « calendrier-annee1.php »
  2. Modifiez « calendrier-annee1.php » pour qu'il produise le calendrier de l'année en cours
    Information

    Vous pouvez utiliser la commande shell ncal -b -M 2022 afin de vérifier la génération de votre calendrier de l'année.

  3. Vérifiez la validité du code HTML produit 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. Calendrier de l'année avec les jours fériés

Travail à réaliser
  1. Copiez votre programme « calendrier-annee1.php » en « calendrier-annee2.php »
  2. Copiez votre programme « calendrier.function.php » en « calendrier2.function.php »
  3. Modifiez « calendrier-annee2.php » pour qu'il utilise « calendrier2.function.php »
  4. Dans « calendrier2.function.php », créez la fonction « jourFerie(int $jour, int $mois, int $annee): bool » retourne vrai pour :
    1. les fêtes civiles
    2. les autres jours fériés dont certains sont à date variable
  5. Modifiez votre fonction « calendrier() » afin qu'elle utilise la fonction « jourFerie() »
  6. Vérifiez la validité du code HTML produit et corrigez-le si nécessaire