Grégory Bourguin
SysReIC - LISIC - ULCO
Projet Web : Good Movies

Instructions

Le but de ce projet est de réaliser un site Web complet en mettant en oeuvre la plupart des connaissances que vous avez acquises dans les modules de Javascript et PHP.

L'idée générale est de créer un site qui permet aux utilisateurs sans session de parcourir les fiches descriptives de films que vous stockerez dans une base de donnée (à créer), et qui permet en plus à un administrateur authentifié d'ajouter / modifier / supprimer des films dans la base de donnée du site.

Mettez en oeuvre les bonnes pratiques vues en cours et utilisez le PHP Objet.

Ce projet est individuel : il n'y a aucune raison pour que plusieurs personnes rendent des sites avec le même code et/ou design !

Données

Pour faire fonctionner votre site, il vous faudra créer une base de donné : comme en cours, vous utiliserez MySQL.

Les films de la base de donnée doivent contenir au minimum les informations suivantes :

  • Un titre : requis.
  • Une date de sortie : optionnel.
  • Un lien vers une affiche : l'image correspondante sera uploadée dans votre site au niveau de la partie administration.
  • Un synopsis : au maximum 100 mots (cf. partie Amdinistrateur).

Puisque c'est un exercice, vous pouvez par exemple récupérer des données sur https://www.allocine.fr/

Allure Générale

Le site doit présenter :

  • Une bannière avec le titre du site + menu de navigation (qui doit aussi permettre à l'administrateur de se connecter)
  • Une zone centrale qui affiche le contenu demandé par l'utilisateur.
  • Un footer indiquant la source des éléments que vous allez utiliser.

Le design est à votre convenance : faites quelque chose dont vous serez fiers.

Mode Public

Le mode public est celui accessible à toute personne qui accède au site (pas d'authentification).

L'utilisateur aura accès aux fonctionnalités ci-après.

Page d'accueil

Cette page doit contenir un diaporama qui fait défiler (ça peut être aléatoire) des "fiches" de film.

Une fiche est une représentation d'un film affichant son titre, son affiche, sa date de sortie et son synopsis.

Liste des films

Cette page présente la liste des films contenus dans la base de donnée.

Chaque film est affiché sous sa forme de "carte" offrant une respésentation synthétique des films affichant uniquement son titre, son affiche et sa date de sortie. (NB : pour ce faire, vous pouvez par exemple customiser le composant Bootstrap Card).

Cette page doit permettre de trier les films selon leur titre ou année de sortie.

Elle doit aussi proposer un champ de recherche permettant d'effectuer une recherche dans la base de données (lister le(s) film(s) correspondant(s)).

NB1 : si la BD est grosse, il serait malvenu de charger tous les films en 1 seule page...

Page d'un film

Un click sur une carte dans la liste des films doit permettre de visualiser la fiche du film ciblé dans une nouvelle page où il est présenté "seul".

Cette page doit proposer un bouton qui fait apparaitre un formulaire permettant à un utilisateur de laisser un commentaire sur le film.

Ce formulaire demandera à l'utilisateur d'entrer son e-mail, un pseudo, et son commentaire.

Avant d'enregistrer le commentaire dans la BD, on fera les vérifications suivantes :

  • La forme de l'adresse mail fournie doit être valide.
  • Si la paire e-mail/pseudo existe déjà dans la BD, la paire fournie dans le formulaire de commentaire doit correspondre.
  • Le commentaire ne doit pas dépasser 150 caractères, espaces non compris.

En cas de problème, les messages adéquats seront affichés dans le formulaire.

Les commentaires laissés par les utilisateurs doivent être affichés dans la page du film en indiquant (uniquement) le commentaire et le pseudo.

Page de login

La barre de navigation du site doit proposer un lien/bouton permettant d'aller sur une page contenant un formulaire de login pour accéder au mode administrateur...

Mode Administrateur

Pour simplifier, on considérera que l'entrée dans le mode administrateur est réalisé grâce à une simple paire login/mot de passe (unique) qui pourra être écrit en dur dans votre code PHP : toute personne ayant donné ce login/mot de passe sera considérée administrateur pendant sa session.

Un administrateur aura (en plus) accès aux fonctionnalités ci-après.

Création de film

Cette page propose en partie gauche un formulaire de création de film dans lequel on pourra entrer un titre, une date de sortie, un synopsis, et uploader une affiche.

La même page propose en partie droite une prévisualisation de la "carte" ou fiche (au choix selon votre mise en page) correspondante au film en cours de création : cette prévisualisation doit être mise à jour en temps réel (merci Javascript).

On vérifiera bien que le titre n'est pas vide, et que le synopsis ne dépasse pas les limites fixées.

Si tout est OK, le film est enregistré dans la base de données.

Edition / Suppression de film

L'accès à l'édition de film est fait au travers de la page de la liste des films : en mode Administrateur, les cartes et les fiches doivent proposer un bouton permettant d'accéder à l'édition du film.

La page d'édition du film est identique à celle de la création (avec prévisualisation), au détail près que les champs doivent être pré-remplis avec les données du film en cours d'édition.

Enfin, en mode édition de film, le formulaire doit proposer un bouton supplémentaire permettant de supprimer le film de la base de donnée.

À propos des Validations

Les formulaires doivent être sujet à une double validation.
  • Une validation au niveau du client faite en Javascript avant la soumission du formulaire (pour ce qui peut l'être).
  • Une validation au niveau du serveur en PHP après soumission du formulaire
    (NB : l'utilisateur pourrait tenter de contourner la vérification Javascript).

Dans les 2 cas, les problèmes doivent être affichés dans le formulaire en demandant à l'utilisateur de bien vouloir vérifier les champs incriminés.