Travail pratique : Plateforme de sélection de places
Ce travail réunit tout ce que nous avons appris depuis le début du cours : tableaux et fonctions pour modéliser une salle, navigation et composition pour assembler les pages, et formulaires, validation et échappement pour soumettre de l’information.
Vous construisez une petite plateforme de billetterie qui émule la sélection de places pour les représentations à l’affiche. Les réservations vivent le temps de la session de travail. La persistance durable (base de données) n’est pas attendu ici.
Le mandat
Section intitulée « Le mandat »Le Théâtre de l’Érablière veut un outil web pour présenter ses pièces à l’affiche, visualiser le plan de sa salle et réserver des places pour une représentation choisie. Vous livrez une plateforme PHP composée minimalement de trois pages principales :
index.php(accueil) : présente les pièces à l’affiche ; chaque représentation mène à sa réservation ;config.php(configuration de salles) : configure une salle (sections, rangées, places) et fixe le prix par section ;reserve.php(réservation) : pour une représentation choisie, affiche le plan de sa salle et permet de réserver une place par un formulaire validé.
Au-delà de ces trois pages, des fichiers auxiliaires (parties communes, fonctions, données) complètent le projet.
Fonctionnalités à réaliser
Section intitulée « Fonctionnalités à réaliser »Les fonctionnalités sont regroupées par page. Les données de la plateforme (la configuration, les places, leur état) sont communmunes et partagées par toutes les pages via les fichiers auxiliaires.
index.php : accueil et pièces à l’affiche
Section intitulée « index.php : accueil et pièces à l’affiche »La page d’accueil présente les pièces à l’affiche et constitue le point d’entrée de la plateforme. C’est elle qui choisit la représentation pour laquelle on réservera.
-
Présenter les représentations à l’affiche : pour chacune, un titre, une courte description, sa date et la salle concernée.
-
Pour chaque représentation, offrir un lien « Réserver une place » vers
reserve.php, en transportant l’identifiant de la représentation :<a href="reserve.php?representation=erabliere-2026-05-01">Réserver une place</a>
config.php : configuration de la salle
Section intitulée « config.php : configuration de la salle »La salle est décrite par une configuration : pour chaque section, un nom, un nombre de rangées et un nombre de places par rangée, ainsi qu’un prix. À partir de cette configuration, une fonction génère l’ensemble des places.
<?php// Exemple de configuration (à adapter, ex. dans data/salle.php)$config = [ "Parterre" => ["rangees" => 5, "placesParRangee" => 12, "prix" => 75.00], "Mezzanine" => ["rangees" => 3, "placesParRangee" => 10, "prix" => 50.00],];Chaque place générée porte au minimum un identifiant (par exemple Parterre-A-12), sa section et un état (libre ou reserve).
<?php$place = [ "id" => "Parterre-A-12", "section" => "Parterre", "etat" => "libre", // "libre" ou "reserve" "nom" => null, // nom du détenteur, une fois réservée];Écrivez une fonction genererPlaces($config) qui retourne le tableau de toutes les places. C’est le cœur du modèle : tout le reste s’appuie dessus.
Tarification par section. Le prix dépend de la section, pas de la place individuelle. Une place du Parterre coûte le prix du Parterre. Prévoyez de récupérer le prix d’une place à partir de sa section (par exemple une fonction prixDeLaPlace($place, $config)).
reserve.php : plan de salle et réservation
Section intitulée « reserve.php : plan de salle et réservation »Cette page travaille toujours sur une représentation reçue en paramètre (?representation=...). Elle affiche le plan de la salle de cette représentation avec ses disponibilités, et réserve une place pour elle.
Plan de salle et sélection. La page affiche le plan : les places, regroupées par section et par rangée, avec une distinction visuelle claire entre libre et réservée.
-
Une place libre est cliquable et affiche le formulaire de réservation pour la représentation et l’identifiant de la place.
-
Une place réservée n’est pas cliquable (affichez-la grisée, désactivée).
Le formulaire demande au moins le nom et le courriel de la personne.
Validation, réservation et mise à jour des disponibilités. À la soumission (POST), vous validez côté serveur : champs obligatoires non vides, courriel valide, place toujours libre.
-
Si des erreurs existent, réaffichez le formulaire avec les messages, en conservant la saisie (échappée avec
htmlspecialchars). -
Si tout est valide, marquez la place comme
reservedans cette représentation, enregistrez le nom, mettez à jour l’état, puis affichez une confirmation. Le plan de salle doit refléter la nouvelle disponibilité.
Parties communes : navigation et composition
Section intitulée « Parties communes : navigation et composition »Les pages partagent le même en-tête, le même pied de page et la même barre de navigation, assemblés par include. La navigation relie l’accueil, la configuration et la réservation.
Structure recommandée
Section intitulée « Structure recommandée »Une organisation de fichiers possible, à adapter :
theatre-erabliere/├── index.php // accueil : pièces à l'affiche├── config.php // configuration de la salle (sections, prix)├── reserve.php // plan de salle + réservation d'une représentation├── includes/│ ├── header.php // <head>, ouverture du <body>, navigation│ └── footer.php // fermeture de la page└── data/ ├── affiche.php // les représentations à l'affiche (return [...]) └── salle.php // configuration par défaut (return [...])Livrables
Section intitulée « Livrables »-
Une archive (
.zip) du dossier du projet, prête à déposer danshtdocs. -
Un fichier
README.md: comment lancer le projet, la configuration de salle par défaut, et l’état des fonctionnalités réalisées. -
Un projet fonctionnel sur XAMPP, sans erreur PHP visible à l’écran.
-
Une démonstration du projet en classe.