Exercice module 133

1. Exercice introduction

1.1 Rappel

Créer une page HTML. La mise en page en CSS est facultative. La page HTML doit contenir:

  • Un titre de niveau 1

  • Un titre de niveau 2

  • Une liste à puce

  • Une image

  • Un mini formulaire avec nom, prénom et bouton d’envoi (qui ne fonctionne pas)

  • Un trait

  • Un paragraphe

  • Une adresse mail

1.2 Hello World !

Créer votre premier fichier PHP pour afficher « Hello World! ». La page doit être validée d’un point de vue HTML.

2. Syntaxe

2.1 Condition

Créer un nombre aléatoire en utilisant la fonction rand()). Le nombre doit être compris entre 1 et 25. Si le nombre est inférieur à 18, afficher « Vous êtes mineur », sinon afficher « Vous êtes majeur ».

2.2 Condition

Créer un nombre aléatoire compris entre 1 et 80. Selon le nombre, afficher une des phrases suivantes:

  • Si le nombre est entre 1 et 17, « Vous êtes mineur ».

  • Si le nombre est entre 18 et 25, « Vous êtes un jeune adulte ».

  • Si le nombre est entre 26 et 65, « Vous êtes un adulte ».

  • Si le nombre est entre 66 et 80, « Vous êtes senior ».

  • Sinon, votre âge n’existe pas.

2.3 Boucle

Créer un code pour trouver les 10 premiers nombres de la suite de Fibonacci.

Pour rappel, la suite de Fibonacci est 0,1,1,2,3,5,8,…

Les deux premiers nombres sont 0 et 1. Ensuite, chaque nombre est la somme des deux précédents.

2.4 Fonction

Créer une fonction pour calculer un nombre à la puissance désirée.

Par exemple: le nombre 2 à la puissance 3 donne le résultat 8.

La fonction aura deux paramètres d’entrée. Un paramètre pour le nombre et un autre pour la puissance. La fonction retournera le résultat.

2.5 Inclusion

Créer une page contenant un footer avec un texte et l’ajouter sur vos exercices précédents.

3. Tableaux

3.1 Création de tableaux

Créer un tableau simple contenant les jours de la semaine. Les jours de la semaine sont lundi, mardi, mercredi, jeudi, vendredi, samedi et dimanche.

Créer un second tableau assiociatif contenant la liste des mois avec leur saison. Par exemple: janvier est en hiver, août est en été.

Afficher les tableaux en utilisant les fonctions var_dump() et print_r().

3.2 Parcourir les tableaux

Parcourir le tableau des jours de la semaine avec une boucle for.

Parcourir le tableau des mois et saisons avec une boucle foreach.

3.3 Tableau multidimensionnel

Créer un tableau multidimensionnel pour stocker les notes de module pour un élève.

Par exemple:

Basile => 100 => 5.5, 301 => 4.0, 226 => 6.0

Lucien => 100 => 6.0, 301 => 5.0, 226 => 2.5

Ensuite parcourir le tableau avec des boucles foreach. Et afficher chaque élève avec ses résultats.

4. Formulaire

4.1 Création d’un formulaire

Voici le formulaire (bug.php) pour rapporter les bug qui contient les champs suivants :

  • Un champ pseudo

  • Un champ de texte pour décrire le problème

  • Une liste déroulante pour définir l’importance du problème avec les éléments suivants :
    • Choisir

    • Basse

    • Moyenne

    • Prioritaire

  • Deux boutons radios pour définir si le ticket est privé ou public.

  • Deux case à cocher
    • pour accepter les conditions générales d’utilisation

    • pour recueillir le consentement de l’utilisateur pour le traitement de ses données.

  • Un bouton d’envoi

Utiliser le formulaire fournit ci-dessous. Aucune modification n’est autorisée.

<h2>Reporter un problème</h2>
<form method="post" action="checkBug.php">
   <p>
      <label for="pseudo">Pseudo :</label>
      <input type="text" name="pseudo" id="pseudo" />
   </p>
   <p>
      <label for="incident">Description du problème :</label><br>
      <textarea name="incident" id="incident"></textarea>
   </p>
   <p>
      <label for="important">Priorité du problème :</label>
      <select name="important" id="important">
         <option value="choice">Choisir</option>
         <option value="low">Basse</option>
         <option value="middle">Moyenne</option>
         <option value="high">Prioritaire</option>
      </select>
   </p>
   <p>
      <label>Visibilité :</label>
      <input type="radio" name="visibility" value="privé">Privé
      <input type="radio" name="visibility" value="public">Public
   </p>
   <p>
      <label>Accepter en cochant les deux cases :</label><br>
      <input type="checkbox" name="condition[]">J'accepte que mes données soient traitées.<br>
      <input type="checkbox" name="condition[]">J'accepte les conditions générales d'utilisation
   </p>
   <p>
      <input type="submit" name="btnSubmit" value="Insérer le ticket" />
   </p>
</form>

4.2 Traitement du formulaire

Lors de l’envoi du formulaire précédent, reprendre chaque champ et les afficher sur une page de résumé. La vérification des champs se fera dans l’exercice suivant.

4.3 Vérification de chaque champ du formulaire

Avant d’afficher les résultats, vérifier chaque champ selon cette logique :

  • Pseudo : Seulement du texte et des chiffres, non vide

  • Champ de texte : non vide

  • Importance : 1 de sélectionné, mais ne doit pas être « choisir »

  • Bouton radio : 1 de sélectionné

  • Case à cocher : les deux doivent être cochées

Si un de ces champs est incorrect, un message d’erreur apparait à la place de l’affichage.

4.4 Transfert de fichier

Utiliser le formulaire (file.php) avec le champ pour ajouter un fichier et un bouton d’envoi. Lors de l’envoi, récupérer le fichier de l’utilisateur et stocker le fichier dans le dossier image de votre site. Attention, seul les jpg et les png sont acceptés. Avant de le sauvegarder dans votre répertoire, donner un nom unique au fichier.

Ce formulaire doit être utilisé sans le modifier.

<h2>Télécharger un fichier</h2>
<form method="post" action="checkFile.php" enctype="multipart/form-data">
   <p>
      <label for="downloadFile">Fichier à télécharger :</label>
      <input type="file" name="downloadFile" id="downloadFile" />
   </p>
   <p>
      <input type="submit" name="btnSubmit" value="Envoyer le fichier" />
   </p>
</form>

6. Session

6.1 Authentification

Formulaire d'authentification

Utiliser le formulaire de connexion comme ci-dessus et un lien « Entrer… » en dessous du formulaire menant sur « profile.php ». Le contenu de la page « profile.php » sera expliquée plus bas.

Ce formulaire doit être utilisé sans le modifier.

<h2>Authentification</h2>
<form method="post" action="checkAuth.php">
   <p>
      <label for="pseudo">Pseudo :</label>
      <input type="text" name="pseudo" id="pseudo" />
   </p>
   <p>
      <label for="password">Mot de passe :</label>
      <input type="text" name="password" id="password" />
   </p>
   <p>
      <input type="submit" name="btnSubmit" value="ok" />
   </p>
</form>
<a href="profile.php">Entrer...</a>

Créer un tableau en PHP avec ces informations :

L’adresse mail sert de login et l’autre texte de mot de passe.

En appuyant sur le bouton « ok », il faut créer une connexion. Le but est de comparer les informations de l’utilisateur. Donc, le login et le mot de passe doivent être identiques aux informations contenues dans le tableau.

Utiliser les session pour garder la connexion active. Pour contrôler si la connexion est active, appuyer sur le lien « Entrer… », le texte « La connexion est active » doit être affiché. Si la connexion n’a pas été faite, le texte « Aucune permission de visualiser cette page sans être connecté » doit être affiché.

Une fois fonctionnelle, modifier le tableau et encoder les mots de passe via la méthode PHP password_hash() et contrôler que votre connexion fonctionne toujours.

7. POO

Créer un petit programme capable de passer des commandes.

Schéma UML

Schéma UML

Rendu

Rendu pour passer commande

8. MVC

Afficher les factures

Remarques préalables:

  • Ne pas hésiter à regarder dans les fichiers déjà créés pour s’en inspirer.

  • Ne pas oublier d’inclure les fichiers nécessaires.

Le but de l’exercice est d’afficher les informations de la page « Liste des factures ». Le rendu devra ressembler à cette copie d’écran :

Rendu pour l'affichage des factures

Dans le menu, le lien avec l’URL existe déjà : index.php?controller=invoice&action=list

1. Créer le contrôleur « InvoiceController » dans le dossier « controller ». Ajouter les actions (sous forme de méthode) « display » et « list », ainsi que le code adéquat. Dans l’action « list », récupérer les données des factures en utilisant le repository (voir point 2).

2. Créer le repository « InvoiceRepository » dans le dossier « model ». Ajouter la méthode nécessaire pour récupérer toutes les données concernant les factures (du fichier data/invoices.php).

3. Créer le dossier « invoice » dans le dossier « view/page/ », puis le fichier « list.php » à l’intérieur. Ajouter le html nécessaire pour faire un affichage de chaque facture selon la copie d’écran.

4. Enfin, Modifier le fichier « index.php » de la racine pour ajouter votre nouvelle modification. Dans la méthode « menuSelected » de la classe « MainController » de ce fichier, ajouter un cas dans le switch permettant d’instancier un objet « InvoiceController ».

Pour les plus avancés

Compléter votre vue pour les factures en y insérant le nom et prénom du client.

Rendu pour l'affichage des factures avec le nom des clients

9. PHPUnit

Reprendre l’exercice pour passer des commandes et effectuer un texte unitaire pour être sûr que la TVA est correctement calculée.