Office de la Formation Professionnelle
et de la Promotion du Travail
M107_Exercice de révision
Vous développez une application web pour gérer un hôtel en ligne. L'application permettra de gérer les
chambres, les réservations et les clients.
I. Etape 1 : Création de la base de données et des tables
Base de données: hotel
Tables:
o Chambre(idChambre,type,prix,disponible) disponible(boolean)
o Reservation(idReservation, #idChambre, nomClient, prenomClient, photoCin, dateDebut,
dateFin, dateReservation,confirmee) (confirmee default false)
o Agent(email,motpass,nom,prenom) //déjà remplis dans la base de donnees manuellement
Les clés primaires sont soulignées, tandis que les clés étrangères sont précédées par "#".
Pour créer ces tables, vous pouvez utiliser PhpMyAdmin pour vous connecter à votre base de données
MySQL et exécuter le script nommé "[Link]".
II. ETAPE 2 : Connexion entre l'Application et la Base de Données
Écrivez un script PHP pour établir une connexion à la base de données MySQL nommée "hotel". Le script
doit être capable de gérer les erreurs de connexion et d'afficher un message confirmant que la connexion a été
établie avec succès en cas de réussite.
III. ETAPE 3 : page Authentification
Créez une page PHP nommée « [Link] » pour l'authentification des utilisateurs (agent au comptoir).
Vérifiez des champs : si les champs email et mot de passe sont vides. Si oui, l'utilisateur est redirigé
vers [Link] avec un message d'erreur.
Validez les identifiants (email et mot de passe) à partir d'une table Agent dans la base de données.
Créez une session pour email.
Figure 1: [Link]
IV. ETAPE 4 : Mon compte
La page [Link] est dédiée à la gestion des réservations de l'hôtel par les agents de comptoir.
Cette page a un accès limité.
V1 Page 1 sur 4
Office de la Formation Professionnelle
et de la Promotion du Travail
Figure 2: page "[Link]"
Écrivez un script PHP qui vérifie l'accès à " [Link]" en exigeant une authentification préalable via
"[Link]", affiche un message de salutation dynamique (Bonjour ou Bonsoir) incluant le nom et prénom
d’agent connecté en fonction de l'heure actuelle, et présente une liste de réservations dans un tableau HTML :
La durée du séjour en jours sera calculée à partir de la date de début et de la date de fin de la
réservation.
Le prix total sera calculé en fonction du prix de la chambre et de la durée du séjour en jours.
Si la réservation est confirmée, affichez le statut comme "Confirmée". Sinon, affichez-le comme "En
attente"
V. ETAPE 5 : Nouvelle réservation
Pour insérer une nouvelle réservation, l'agent au comptoir d'hôtel connecté peut cliquer sur le lien « Nouvelle
Réservation », ce qui le dirigera vers la page « [Link] »
V1 Page 2 sur 4
Office de la Formation Professionnelle
et de la Promotion du Travail
Figure 3: page "[Link]"
Rédigez un script PHP qui :
1. Transfère la photo de la CIN du client vers un dossier dans la racine du projet (par exemple : images).
2. Insère les données de la réservation dans la base de données:
a) Vérifier que l'identifiant de la réservation est correctement formaté : une sous chaine
"RES2024_" suivie de 2chiffres (par exemple : RES2024_01). Afficher « Format invalide ! » en
cas de non-conformité.
b) Remplir la liste déroulante avec les numéros de chambre disponibles. (les chambres déjà
réservées ne seront pas affichées)
c) Empêcher l'ajout de la réservation si une réservation avec le même identifiant existe déjà, et
afficher le message « l’ID de réservation existe déjà !».
d) Vérifier que la date de début n'est pas une date passée et n’est pas supérieur à la date de fin.
Sinon, afficher le message « Date invalide ».
e) Après l'insertion de la réservation, assurez-vous de modifier la disponibilité de la chambre en la
mettant à "false
c. Redirige l'agent vers son compte.
VI. ETAPE 6: Confirmer une réservation
Lorsqu'un agent au comptoir clique sur le lien "Confirmer", la valeur de la colonne "confirmee" dans la base
de données passe de false à true. Si la réservation est déjà confirmée, un message indique que la réservation a
déjà été confirmée. De plus, chaque réservation est automatiquement confirmée un mois après sa date de
réservation.
VII. ETAPE 7: Annuler une réservation
Lorsqu'un agent au comptoir clique sur le lien "Annuler" d'une réservation non confirmée, cette réservation
doit être supprimée de la base de données. Si la réservation est déjà confirmée, un message indiquant
"Impossible d'annuler une réservation déjà confirmée !" sera affiché à l'agent
VIII. ETAPE 8: Se déconnecter
Lorsque l'agent clique sur le lien « Se déconnecter », la session actuelle est détruite et l'agent est redirigé
automatiquement vers la page de connexion ([Link])
V1 Page 3 sur 4
Office de la Formation Professionnelle
et de la Promotion du Travail
IX. Autre fonctionnalités :
Liste des réservations avec pagination
Permet d’afficher les réservations en plusieurs pages, limitant le nombre d’éléments affichés simultanément
pour une meilleure lisibilité et performance.
Recherche de réservations
Ajouter un formulaire de recherche dans [Link] :
Rechercher par :
o Nom du client.
o Date de début / fin.
o Statut (confirmée ou non).
Afficher les résultats dans le même tableau.
Input pou saisir ------ select les options ----input :submit chercher
Filtrer les chambres par type et prix
Sur la page [Link] :
Ajouter un formulaire permettant de filtrer :
o par type de chambre (single, double, suite…)
o par intervalle de prix (ex : 300 à 600 MAD)
o par la disponibilité de la chambre
Afficher uniquement les chambres correspondantes.
Statistiques générales
Créer une page [Link] accessible aux agents :
Afficher :
o Nombre total de réservations
o Nombre de réservations non confirmées
o Nombre de réservations confirmées
o Nombre de chambres disponibles
o Nombre de chambres non disponibles
o Moyenne des nuits réservées par client
Possibilité de filtrer par mois ou année BONUS
Archive des réservations terminées
Après la date de fin d’une réservation, déplacer les données dans une table d’archive (ReservationArchive)
et les supprimer de la table active.
V1 Page 4 sur 4