.. ================================================== .. FOR YOUR INFORMATION .. -------------------------------------------------- .. -*- coding: utf-8 -*- with BOM. =================== 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. .. code-block:: html

Reporter un problème


Privé Public


J'accepte que mes données soient traitées.
J'accepte les conditions générales d'utilisation

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. .. code-block:: html

Télécharger un fichier

**5. Cookie** ============= Utiliser le formulaire (cookie.php) demandant le login de l'utilisateur et un bouton "Soumettre". Une fois le bouton cliqué, créer les cookies suivants : * Un cookie permettant de stocker le pseudo * Un cookie permettant de stocker le navigateur utilisé * Un cookie permettant de stocker le nombre de fois que le formulaire a été soumis pour le poste client Les cookies sont uniquement créés/modifiés si le formulaire a été soumis. Ce formulaire doit être utilisé sans le modifier. .. code-block:: html

Création de cookie

**6. Session** ============== 6.1 Authentification -------------------- .. figure:: Images/session_form.jpg :scale: 100 % :alt: Formulaire d'authentification :align: center 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. .. code-block:: html

Authentification

Entrer... Créer un tableau en PHP avec ces informations : * toto@toto.ch hello * admin@toto.ch super 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** .. figure:: Images/uml.jpg :scale: 100 % :alt: Schéma UML :align: center **Rendu** .. figure:: Images/renduCommande.png :scale: 100 % :alt: Rendu pour passer commande :align: center **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 : .. figure:: Images/mvcRendu.jpg :scale: 100 % :alt: Rendu pour l'affichage des factures :align: center 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. .. figure:: Images/mvcClient.jpg :scale: 100 % :alt: Rendu pour l'affichage des factures avec le nom des clients :align: center **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.