Cours de Rémi JarjatCours de Rémi Jarjat
  • Liste des cours
  • Culture numérique
  • Git
    • Terminologie
    • Avant de commencer
    • Créer un dépôt (local)
    • Enregistrer des changements
    • Des branches
    • Mise en commun du travail
    • Annuler des changements
    • Réécrire l'historique
    • Des outils pour se simplifier Git
    • Exercices
    • Exemples pratiques
  • Linux
    • Installation
    • Historique
    • Rangement des fichiers
    • Les processus
    • Commandes de base
    • Commandes avancées
    • /linux/6-other-technologies.html
    • Exercices
    • Correction des exercices
  • PHP
    • Environnement de travail
    • Bases du PHP
    • Tests et boucles
    • Procédures et fonctions
    • Interagir avec l'utilisateur
    • La temporisation de sortie
    • PHP Doc et PSR
    • PHP Orienté objet
    • Héritage et objets
    • Factorisation
    • Manipuler la BdD avec PDO (PHP Data Object)
    • Architecture MVC
    • Webservices REST
    • Exercices - Bases
    • Exercices - Séparer en plusieurs fichiers
    • Exercices - POST et SESSION
    • Exercices - Panier et validation
    • Exercices - Objets
    • Exercices - BdD avec PDO
    • Projet - montage d'ordinateurs
    • Projet - Personnages de Jeux de Rôle
  • Symfony
    • Installer Symfony et son environnement de travail
    • Structure et utilisation d'un projet
    • Le routing
    • Les controllers
    • Twig
    • Les services et l'injection de dépendances
    • Doctrine et la BdD
    • Formulaires
    • Les traductions
    • Event listeners/subscribers
    • Connexion et sécurisation
    • Bundles
    • Easy Admin Bundle
    • API Platform
    • Pense-bêtes
    • Symfony au quotidien
    • Travailler avec Docker
    • Projet : annonces de SPA / éleveurs
    • Exercices
  • Javascript
    • Les bases du langage
    • Manipulation logique
    • Le DOM
    • JQuery
    • Ajax
    • Programmation orientée objet
    • Webpack
    • Outils utiles
    • Révisions
  • Serveur Lamp
  • Déploiement
    • Des outils et manières de faire
    • Déploiement par FTP
    • Wordpress
    • Intégrer Git dans le processus
    • GitHub Pages pour déployer facilement
    • Symfony et Angular
  • Docker
  • Intégration continue
  • Sécurité informatique

Exercices - Panier et validation

  • 18.0. Afficher les détails d'un bonnet
  • 18.1. Créer un front controller
    • Correction
  • 19. Ajouter des éléments au panier
    • Exemple de format (non obligatoire) de $_SESSION['cart']
  • 20. Afficher les éléments du panier
    • Créer une PR (Pull Request)
    • Correction des exercices 19 et 20
  • 21. Ajouter un formulaire de contact
    • Indices
    • Pull Request
    • Correction

Pré-requis :

  • avoir un environnement de travail (Wamp / Xampp / Mamp ou équivalent)
  • avoir des bases de PHP

Correction :

  • En vidéo, tout le long des exercices (après l'énoncé correspondant)
  • Dans le code, sur le repository dédié aux corrections sur GitHub.

18.0. Afficher les détails d'un bonnet

Créer une nouvelle page pour afficher les informations complètes sur un bonnet.

  • Créer une page beanie.php
  • Cette page doit récupérer un identifiant de bonnet dans l'url (en utilisant $_GET)
  • Dans cette page, ajouter toutes les informations disponibles pour un bonnet (⚠️ penser à la mettre à jour dans les autres exercices)

18.1. Créer un front controller

Le but du front controller est de réduire (encore) les répétitions de code, en gérant tous les éléments constants (inclusions, démarrage de session, etc.).

  • Nous allons maintenant utiliser notre fichier index.php en tant qu'unique script PHP appelé. C'est-à-dire que nous n'appellerons plus list.php (et les autres pages) directement, mais en passant par elle. (en appelant index.php?page=list ou ?page=list)
  • Renommer le fichier index.php en home.php et créer un nouveau fichier index.php
  • Ranger les fichiers de pages qu'on a jusqu'à présent (list, login, home, etc.) dans un dossier pages
  • Dans index.php, nous allons récupérer un paramètre GET, nommé page, qui contiendra la page à charger (page d'accueil, liste des produits, panier, etc.)
  • Mettre à jour les autres pages en conséquence pour réduire autant que possible le code des pages
  • Ajouter la temporisation de sortie pour permettre les éventuelles redirections
<?php
ob_start();
//
// ... contenu du script ...
//
ob_end_flush();

Correction

19. Ajouter des éléments au panier

Nous avons des produits, il ne nous reste plus qu'à les acheter ! (faire semblant de les acheter, plutôt)

  • Sur la page de liste (list.php), ajouter un bouton "Ajouter au panier" (on ajoute un seul élément à la fois dans le panier)
  • Gérer l'ajout au panier d'un élément (passer un identifiant (à ajouter dans la liste des produits) qui sera récupéré avec $_GET)
  • Les éléments doivent être présents dans la session

Exemple de format (non obligatoire) de $_SESSION['cart']

[
    666 => 2, // 2 éléments avec l'id 666 sont dans le panier
    32 => 1, // 1 élément avec l'id 32 est présent dans le panier
];

20. Afficher les éléments du panier

  • Créer une page cart.php (si ça n'est pas déjà fait) dans laquelle vous allez afficher le panier
  • Ajouter des boutons (liens) pour ajouter ou supprimer des éléments déjà présents
  • Calculer et afficher le prix pour chaque ligne ($price * $quantity)
  • Calculer et afficher le prix total du panier
  • Ajouter un bouton pour vider le panier
  • Le panier doit être disponible même si l'utilisateur n'est pas connecté

Créer une PR (Pull Request)

  • Créez une Pull Request
  • Invitez quelqu'un.e sur votre projet
  • Faites vous inviter par cette personne également
  • Relisez le code et faites vos retours (vérifiez que le code valide bien les normes PSR-1 et PSR-12, par exemple)
  • Approuvez (ou non) sa PR
  • Une fois votre PR validée par un.e pair.e, vous pouvez la fusionner (merge)

Correction des exercices 19 et 20

21. Ajouter un formulaire de contact

  • Trois champs :
    • Sujet (champ de type text)
    • Email (pour recontacter la personne) (champ de type email)
    • Message (champ de type textarea)
  • Contraintes (valider que les champs correspondent à ces critères, tant en html que PHP) :
    • Sujet non vide (Attention au cas ' ')
    • Email valide (non vide et de la forme test@test.test)
    • Message non vide (Attention au cas ' ')

Indices

  • Il existe une fonction PHP qui va vérifier la validité d'une variable (dont un email)
  • Il faut passer les données en POST dans votre formulaire
  • Vous pouvez ajouter une validation au niveau du HTML, mais il faudra quand même faire la validation PHP (il est facile de contourner la validation HTML)

Pull Request

  • Créez une Pull Request
  • Invitez quelqu'un.e sur votre projet
  • Faites vous inviter par cette personne également
  • Relisez le code et faites vos retours (vérifiez que le code valide bien les normes PSR-1 et PSR-12, par exemple)
  • Approuvez (ou non) sa PR
  • Une fois votre PR validée par un.e pair.e, vous pouvez la fusionner (merge)

Correction

Dernières mise à jour :
Prev
Exercices - POST et SESSION
Next
Exercices - Objets