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>
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.
<h2>Création de cookie</h2>
<form method="post" action="checkCookie.php">
<p>
<label for="pseudo">Pseudo :</label>
<input type="text" name="pseudo" id="pseudo" />
</p>
<p>
<input type="submit" name="btnSubmit" value="Soumettre" />
</p>
</form>
6. Session¶
6.1 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 :
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.
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 :
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.
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.




