Evaluation

Vous êtes ici : >> SQL / Evaluation
Temps d'étude : 10 jours. Niveau : Moyen.
Tags : Evaluation
Fichier(s) utile(s) pour ce cours : bibliotheque.rar

Exercice 1 : Formulaire POST

Exercice 1.1
Pour cet exercice, nous allons créer un formulaire en HTML avec une récupération des saisies en PHP.
L'objectif est de récupérer les saisies postées sur la même page (juste au dessus du formulaire).
Créez une page « formulaire.php ».
explication PHP

Exercice 1.2
Créer un formulaire en affichant les saisies récupérées sur la même page.
Champ à prévoir (contexte : produit) : titre, couleur, taille, poids, prix, description, stock, fournisseur.

Exercice 1.3
Créer un formulaire en affichant les saisies récupérées sur deux pages différentes.
Champ à prévoir (contexte : voiture) : marque, modele, couleur, km, carburant, annee, prix, puissance, options.

Exercice 1.4
Créer un formulaire en affichant les saisies récupérées et en controlant que le pseudo soit compris entre 3 et 10 caractères maximum (sinon prévoir un message d'erreur).
Champ à prévoir (contexte : membre) : pseudo, mdp, email.

Exercice 2 : Liens GET

Exercice 2.1
Pour cet exercice, nous allons créer plusieurs liens en HTML (qui pointent vers la même page) avec une récupération des paramètres en PHP.
L'objectif est de récupérer les paramètres véhiculés par l'url sur la même page.
Créez une page « lien.php ».
explication PHP

Exercice 2.2
Créer une page avec deux liens : homme, femme.
Récupérer le texte du lien cliqué en affichant le message "Vous êtes un Homme" ou "Vous êtes une femme".

Exercice 2.3
Créer une page1 avec plusieurs liens (contexte : carte de restaurant) : pizza, salade, viande, poisson.
Récupérer le plat cliqué (dans la page1) et afficher-le sur la page2 en adressant un message correspondant au choix de l'internaute.
Exemple si l'on a cliqué sur pizza : "Vous avez choisi de manger 1 pizza" .

Exercice 3 : Boucle

Exercice 3.1
Afficher des nombres allant de 1 à 100.

Exercice 3.2
Afficher des nombres allant de 1 à 100 avec le chiffre 50 en rouge.

Exercice 3.3
Afficher des nombres allant de 2000 à 1930.

Exercice 3.4
Afficher le titre suivant 100 fois : <h1>Titre à afficher 100 fois</h1>

Exercice 3.5
Afficher le titre suivant "<h1>Je m\'affiche pour la Nème fois</h1>".
Remplacer le N avec la valeur de $i (tour de boucle).

Exercice 4 : Calculatrice

Pour cet exercice, nous allons créer une calculatrice en PHP, c'est un classique qui a le mérite d'être formateur dans les débuts.
Créez une page « calculatrice.php ».
La page calculatrice est un formulaire avec un menu déroulant qui nous permet de choisir le signe de l’opération (addition, soustraction, multiplication, division).

explication PHP

Exercice 5 : Création d'un Repertoire

Exercice 5.1 Créez une base de données que vous appellerez « repertoire ».
A l’intérieur de celle-ci, vous créerez une table que vous appellerez « annuaire » avec les champs suivant :
- id_annuaire (INT, 3, AI - PK)
- nom (VARCHAR, 30)
- prenom (VARCHAR, 30)
- telephone (INT, 10, zerofill)
- profession (VARCHAR, 30)
- ville (VARCHAR, 30)
- codepostal (INT, 5, zerofill)
- adresse (VARCHAR, 30)
- date_de_naissance (DATE)
- sexe (ENUM, 'm','f')
- description (TEXT)



Exercice 5.2 Créez une page « formulaire.php » qui aura une apparence similaire à l’image ci-dessous.
explication PHP

- Afficher le récapitulatif des saisies au dessus du formulaire (sur la même page).


Exercice 5.3 Une fois les valeurs récupérées du formulaire, il faudra développer le code permettant l’insertion des saisies dans la table « annuaire » de la base de données « repertoire ».
Chaque validation du formulaire doit ajouter une nouvelle ligne d’enregistrement dans la table « annuaire ».
explication PHP


Exercice 5.4 Créez une page « affichage_annuaire.php » qui permettra de récupérer les données et ainsi afficher le nom des champs suivi des informations contenues à l’intérieur de la table « annuaire ».
explication PHP


Exercice 5.5, Sur la page « affichage_annuaire.php », Ajouter 2 informations :
- Le nombre d’hommes
- Le nombre de femmes

explication PHP


Exercice 5.6, MODIFICATION ET SUPPRESSION Sur la page « affichage_annuaire.php » :
  • Donnez la possibilité de modifier les enregistrements (ouvrant un formulaire pour effectuer les modifications)
  • Donnez la possibilité de supprimer les enregistrements (avec un message demandant une confirmation).

Ces deux actions doivent être possibles directement via la page web.

Exercice 6 : Création d'une Bibliothèque

Consigne

Ce sujet à pour objectif de tester vos compétences techniques (php et sql) en situation réélle.

Exercice 6.1 – Creation d'une base de données

Créez une base de données que vous appellerez « bibliotheque ».
A l’intérieur de celle-ci, vous créerez trois tables que vous appellerez « abonne », « emprunt » et « livre » avec les champs suivants :

Table : abonne
Champs :
- id_abonne (PK – AI – INT(3))
- prenom (VARCHAR(25))

Table : emprunt
Champs :
- id_emprunt (PK – AI – INT(3))
- id_livre (FK - INT(3))
- id_abonne (FK - INT(3))
- date_sortie (DATE)
- date_rendu (DATE – DEFAULT NULL)

Table : livre
Champs :
- id_livre(PK – AI – INT(3))
- auteur (VARCHAR(25))
- titre (VARCHAR(50))


Et voici les contenus :

Abonne
id_abonne prenom
1 Guillaume
2 Benoit
3 Chloe
4 Laura

Emprunt
id_emprunt id_livre id_abonne date_sortie date_rendu
1 100 1 2011-12-17 2011-12-18
2 101 2 2011-12-18 2011-12-20
3 100 3 2011-12-19 2011-12-22
4 103 4 2011-12-19 2011-12-22
5 104 1 2011-12-19 2011-12-28
6 105 2 2012-03-20 2012-03-26
7 105 3 2013-06-13 NULL
8 100 2 2013-06-15 NULL

Livre
id_livre auteur titre
100 GUY DE MAUPASSANT Une vie
101 GUY DE MAUPASSANT Bel-Ami
102 HONORE DE BALZAC Le pere Goriot
103 ALPHONSE DAUDET Le Petit chose
104 ALEXANDRE DUMAS La Reine Margot
105 ALEXANDRE DUMAS Les Trois Mousquetaires


Exercice 6.2 – Les Entites

Prévoir 3 affichages :
o abonne
o emprunt
o livre
Mettre en place un menu de navigation pour accèder aux différents affichages (1 affichage par entité).

Exercice 6.3 - formulaire et enregistrement des donnees

o Créez un formulaire pour chaque entité : abonne, emprunt et livre.
o Réaliser des contrôles de saisies.
o Enregistrer les données dans les tables correspondantes de la base.

Exercice 6.4 - Affichage

o Pour chaque entité, créer une partie qui affichera chaque table sql en table html sur la page web. ( « abonne », « livre » et « emprunt » ).

Exercice 6.5 – Modification et Suppression

o Développer une option permettant la suppression des enregistrements (prévoir un message demandant une confirmation).
o Développer une option permettant la modification des enregistrements (prévoir l'ouverture d'un formulaire pour effectuer les modifications).
Ces deux actions doivent être possible directement via la page web pour toutes les données (abonne, livre et emprunt).

Type de résultat attendu




EXERCICE 6.6

Réaliser divers affichages.
o Afficher le nombre d’abonnés.
o Afficher le nombre de livres.
o Afficher le nombre d'emprunts.
o Afficher les numéros et titres des livres n’ayant pas été rendus à la bibliothèque
o Afficher le n° de(s) livre(s) que Chloé a emprunté à la bibliothèque
o Afficher la liste des abonnés ayant déjà emprunté un livre d’Alphonse DAUDET
o Afficher les titres des livres que Chloé n’a pas encore rendus à la bibliothèque.
o Afficher les titres des livres que Chloé n’a pas encore empruntés.
o Afficher le prénom de l’abonné ayant emprunté le plus de livres
o Afficher le nombre de livre emprunté par Guillaume
o Afficher la liste des abonnés ayant emprunté le livre « Une Vie » sur l’année 2011
o Afficher le nombre de livres empruntés par chaque abonné
o Afficher la liste des abonnés avec les titres des livres qu’ils ont empruntés ainsi que la date de l’emprunt

Télécharger la correction de l'exercice bibliotheque

Exercice 7 : Création d'une console

Le but de cet exercice va être de redévelopper une console permettant d'exécuter des requêtes SQL via une page web.

Exercice 7.1 : Création d'un formulaire

Le premier exercice consiste a créer un formulaire comme ceci :

La zone de saisie doit nous permettre de lancer une requête sur la base de données nommée « entreprise ».

Exercice 7.2 : Traitement et résultat

Le résultat doit apparaitre comme ci-dessous accompagné des différentes informations tels que le nombre de lignes retournées, la requête et la base concernée ainsi qu’un message de validation ou d’erreur selon le succès ou l’échec de la requête.


Exercice 7.3 : Amélioration du formulaire

Ajoutez un champ listant les différentes bases de données dont nous disposons en option séléctionnable avec la possibilité d’effectuer une requête sur la base de données séléctionnée.

Le 1er champ doit lister les bases de données disponible tandis que le second champ permettra de formuler une requête sur la base qui aura été sélectionnée.
Après validation du formulaire, vous devrez faire en sorte de laisser afficher la dernière requête exécutée dans la zone de saisie et également présélectionnez la dernière option choisie pour la base de données utilisée.

Exercice 7.4 : Amélioration du résultat

Affichez le résultat sur la même page avec des informations supplémentaires tels que les noms des tables disponibles sur la base de données sélectionnée pour effectuer la requête.


Exercice 7.5 : Exécution des requêtes

Ajoutez la possibilité d’exécuter d’autres types de requête tels que : select, insert, update, delete, replace, show, etc.


Exercice 7.6 : Message

Votre requête doit s’exécuter et votre page doit vous indiquer si la requête est validée :

Ou, dans le cas contraire, affichez l’erreur qui serait survenue :


Exercice 7.7 : Historique

Toutes les requêtes (peu importe leur type) qui ont été exécutées avec succès doivent être conservées dans un fichier « historique.txt ». En effet, dans ce fichier nous devons y retrouver l’historique des requêtes ayant été exécutées sur votre page ainsi que la base de données concernée.


Exercice 7.8 : Affichage de l'historique

Toutes les requêtes conservées dans le fichier « historique.txt » doivent apparaitre sur la page.


Exercice 7.9 : Exécution de l'historique

Ajoutez la possibilité de cliquer sur les requêtes (contenues dans l'historique) directement pour les exécuter à nouveau via la page web.
Une requête peut être saisie dans la zone réservée à cet effet ou être exécutée en cliquant sur les liens proposés par l’affichage de l’historique. Ceci est valable pour tous les types de requête.

Vous devrez également penser à proposer un bouton permettant de supprimer l’historique des requêtes contenues dans le fichier « historique.txt » en supprimant le fichier.

Exercice 7.10 : Interface

Recréez une interface de gestion de base de données avec un maximum d’options pour exploitez les données (ex : export des données).
Exemple : PHPMYADMIN ou SQLBUDDY.
Cette interface devra être innovante, fonctionnelle et intuitive.

Exercice 7 : ATELIER - Création d'un site web complet

Voici le cahier des charges :

Présentation

LOKISALLE est une société imaginaire. Les informations concernant LOKISALLE sont factices.
  • Raison sociale : LOKISALLE
  • Type de structure : SARL
  • Adresse : 300 Boulevard de Vaugirard, 75015 Paris, France
  • Mission : La société est spécialisée dans la location de salle pour l’organisation de réunion par les entreprises ou les particuliers.
  • Périmètre géographique de l’activité : La société dispose de salles dans toute la France et plus précisément à Paris, Lyon et Marseille.

Objectifs et Bénéfices

Le projet vise à offrir un ensemble de services basés sur les TIC permettant notamment :
  • au grand public (visiteurs) de découvrir l’activité de LOKISALLE.
  • au grand public de consulter le catalogue produits ainsi que les fiches des produits proposés par LOKISALLE.
  • aux clients d’acheter en ligne des produits proposés dans le catalogue produits de LOKISALLE.
  • aux membres de partager des avis sur les salles, de noter les salles, d’être informés des nouveautés et promotions de LOKISALLE.
  • aux gérants (administrateurs du site) de LOKISALLE d’alimenter le catalogue produits, de consulter la liste des commandes, d’envoyer une newsletter aux membres, etc.

Architecture logicielle

L’architecture logicielle sous-jacente au site devra utiliser les technologies récentes éprouvées.
La solution devra autant que possible remplir les spécifications suivantes :
  • architecture ouverte basée sur l’utilisation du couple PHP/MySQL.
  • technologies standard pour la structuration et la description des données aussi bien que des interfaces (HTML/CSS).

Ergonomie

La page d’accueil du portail a une importance primordiale : elle doit, en quelques secondes, donner à l’utilisateur une vision de ce qu’il peut attendre du site. Tout malentendu à ce niveau peut frustrer l’utilisateur, interrompre la visite et entacher l’image de LOKISALLE.
Le site web doit être adaptable et prévoir une version responsive design.
Ces principes devront rester cohérents avec les objectifs et les contraintes du site.

Les schémas introduits dans ce document sont présents à titre explicatif, il ne s’agit pas d’une suggestion de mise en forme.
Les fonctionnalités seront les mêmes d’un projet à un autre (respect du cahier des charges).
De ce fait, il serait donc intéressant que vous vous démarquiez via le design de votre site.
Vous aurez donc carte blanche sur cette partie, l’idéal serait d’innover et d’être inventif sur les choix d’ergonomie. Le jury y sera sensible.

Contraintes

L’ensemble du portail devra être compatible avec les navigateurs les plus utilisés du marché, soit :
  • Mozilla Firefox - dernières versions,
  • Internet Explorer - dernières versions,
  • Chrome - dernières versions.
La sécurité sur le site devra couvrir les notions de confidentialité, de droit d’accès et d’authentification.

Référencement

Le référencement et le positionnement d’un site au niveau des différents outils de recherche de l’Internet (annuaires, moteurs) sont d’une importance cruciale pour attirer une bonne audience.
Les principes et règles de métier pour atteindre ces deux objectifs seront mis en œuvre dès la conception du portail. (Respect des normes w3c).

Planification du projet

Le planning de la prestation se conformera aux étapes suivantes :
  • Création des maquettes graphiques
  • Lancement de l’intégration et du développement
  • Création d’une version du site Internet
  • Tests, débogages, validation finale
  • Mise en Ligne
  • Livraison

Précisions

« LOKISALLE est une société imaginaire. Les informations concernant LOKISALLE sont factices »
Pour le bon déroulement du projet, veillez à prendre des images et texte libre de droit.
N’oubliez pas de préciser dans les mentions légales que ce site n’est pas réalisé dans un but commercial mais dans le but de répondre à un atelier PHP.

Le site doit être sur internet et hébergé sur le web pour une présentation client.

Arguments à bannir : « je n’ai pas eu le temps » « j’étais en entreprise », « c’était trop difficile je ne l’ai pas fait », « je ne savais pas que le rendu était pour aujourd’hui », « mon pc est tombé en panne hier et je n’avais pas d’autres sauvegardes », « j’avais d’autres projets urgents », « j’étais en plein déménagement, désolé ! », etc.

Conseil

Pensez à mettre votre site en ligne et tout « re-tester » au moins 10 jours avant les soutenances.
On ne va pas en présentation chez un client avec un site mis en ligne la veille.

Justesse

Le respect du cahier des charges est fondamental. Vous devrez également complètement « rentré(e) » dans votre sujet afin de prévoir des tests de débogage ainsi que des tests de cohérence qui ne sont pas forcément à mentionner par le client.

Exemple :
  • Que se passe t-il si un membre tente de s’inscrire deux fois à la newsletter ?
  • Peut-on créer ou réserver un produit sur des dates antérieures dans le temps ?
  • Y’a-t-il des moyens d’altérer le comportement initialement prévu du site via l’url ou d’autres points d’entrée (sécurité) ?
  • Que se passe t’il lorsqu’un membre est supprimé (commandes, avis, newsletter, etc) ?
  • Que se passe t’il lorsqu’une salle est supprimée (produits, avis, commandes, etc.) ?
  • Est-il possible de créer 2 produits sur la même salle et sur des dates qui se chevauchent ?
Des tests de cohérence seront réalisés lors de la livraison du projet.
L’aspect sécurité est également important.
Il faut bien discerner la limite entre l'assurance de livrer un produit fiable et la responsabilité du client sur ce produit.

Exercice 7.1 : Les pages web côté FRONT

Exercice 7.101 : Accueil (index.php)

explication PHP

Description :
1 correspond à la zone du haut, nous y retrouverons le logo et la bannière.
2 correspond au menu quand un visiteur arrive (attention il est évolutif suivant l’internaute : visiteur, membre, administrateur). Ci-dessus nous sommes dans le cas visiteur.
3 correspond au texte qui présente notre activité (location de salles).
4 correspond aux trois dernières offres (évidemment supérieures à la date du jour et « réservable »)
5 correspond à la zone du bas, nous y retrouvons plusieurs liens.

Recommandations :
Il serait judicieux pour la zone 2 de créer un fichier « menu.inc.php » afin d’y mettre tous les liens et de l’inclure sur toutes les pages. (idem pour la zone 1 « haut.inc.php » : doctype, appel vers la feuille de style, etc. - et pour la zone 5 « bas.inc.php »: à nouveau des liens).
Texte cohérent avec l’activité pour la zone 3.
Bien entendu pour la zone 4 il s’agit d’un affichage « dynamique » les informations proviennent de la base de données (voir les tables : produits et salles).
Le lien « connectez-vous pour l’ajouter au panier » pointe sur la page connexion.php.
4 Deux choix s’offrent alors à l'internaute :
o Voir la fiche détaillée le lien pointe sur « reservation_details.php » (cette page n’est pas répertoriée dans la zone 2 du menu). (il convient impérativement de passer l’id du produit pour avoir l’affichage complet relatif à ce produit).
Et c’est le cas pour trois des pages du menu :
explication PHP

o Après s’être connecté : Ajouter directement le produit au panier, le bouton pointe sur « panier.php ». explication PHP

(il faudra alors passer l’id du produit). Et c’est une possibilité pour trois des pages du menu :
explication PHP

Pour les pages index.php – reservation.php – recherche.php ; Si aucun produit n’est réservable, nous prévoirons un message d’information « aucune offre pour le moment ».


Exercice 7.102 : Réservation (reservation.php)

explication PHP

Description :
1 correspond à la zone du haut, nous y retrouverons le logo et la bannière.
2 correspond au menu quand un visiteur arrive (attention il est évolutif suivant l’internaute : visiteur, membre, administrateur). Ci-dessus nous sommes dans le cas visiteur.
3 correspond à l’ensemble de toutes nos offres (évidemment supérieures à la date du jour et « réservable »).
5 correspond à la zone du bas, nous y retrouvons plusieurs liens.

Recommandations :
Bien entendu pour la zone 3 il s’agit d’un affichage « dynamique » les informations proviennent de la base de données (voir les tables : produits et salles).
Le lien « connectez-vous pour l’ajouter au panier » pointe sur la page connexion.php.
Cette page est similaire à la page d’accueil. Deux choix s’offrent à nous :
  • Voir la fiche détaillée le lien pointe sur « reservation_details.php » (cette page n’est pas répertoriée dans la zone 2 du menu). (il convient impérativement de passer l’id du produit pour avoir l’affichage complet relatif à ce produit).
  • Après s’être connecté : Ajouter directement le produit au panier, le bouton pointe sur « panier.php ». (Il faudra alors passer l’id du produit sur la page panier).

explication PHP


Exercice 7.103 : Recherche (recherche.php)

explication PHP

Description :
1 correspond à la zone du haut, nous y retrouverons le logo et la bannière.
2 correspond au menu quand un visiteur arrive (attention il est évolutif suivant l’internaute : visiteur, membre, administrateur). Ci-dessus nous sommes dans le cas visiteur.
3 correspond à l’ensemble de toutes nos offres (évidemment supérieures à la date choisie par l’internaute et « réservable »)
4 correspond à la recherche l’internaute peut ainsi choisir la date à laquelle il souhaite louer une salle et le site affiche les salles « réservable » pour ou à partir de cette date.
* Par défaut, les champs déroulants seront positionnés sur le mois et l’année en cours.
5 correspond à la zone du bas, nous y retrouvons plusieurs liens.

Recommandations :
Bien entendu pour la zone 3 il s’agit d’un affichage « dynamique » les informations proviennent de la base de données (voir les tables : produits et salles).
Deux choix s’offrent à nous :
  • Voir la fiche détaillée le lien pointe sur « reservation_details.php » (cette page n’est pas répertoriée dans la zone 2 du menu). (il convient impérativement de passer l’id du produit pour avoir l’affichage complet relatif à ce produit).
  • Après s’être connecté : Ajouter directement le produit au panier, le bouton pointe sur « panier.php ».
explication PHP

Il faudra alors passer l’id du produit sur la page panier.
Il s’agit du même type d’affichage que sur la page reservation.php.
4, il faudra bien penser à récupérer 3 valeurs lors de la validation de la rechercher par l’utilisateur et ne pas oublier de prendre en compte le format de date américain (ANNEE/MOIS/JOUR) avant de transmettre le tout.

Exercice 7.104 : Réservation en détail (reservation_details.php)

explication PHP

Description :
1 correspond à la zone du haut, nous y retrouverons le logo et la bannière.
2 correspond au menu quand un visiteur arrive (attention il est évolutif suivant l’internaute : visiteur, membre, administrateur). Ci-dessus nous sommes partiellement dans le cas visiteur.
3 correspond aux informations importantes de la salle : photo, titre, texte de description, capacité et catégorie.
4 correspond aux informations complémentaires de la salle.
6 correspond à la zone d’affichage de commentaires et de notations. Attribution possible de commentaires et de notes par les personnes connectées (admin ou membres) uniquement.
Nous restons sur la même page après soumission du commentaire ET de la note.
6* le schéma montre la vision d’une personne membre pour cette zone.
5 correspond à la zone du bas, nous y retrouvons plusieurs liens.

Recommandations :
Il faut bien souligner le fait que nous sommes sur la page détaillée d’un produit.
Afin d’arriver sur cette page et d’obtenir les informations attendues, cela implique que l’internaute ait cliqué sur « voir la fiche détaillée » via la page index.php ou reservation.php ou encore recherche.php et soit conduit vers la page reservation_details.php ?id_produit=N.

Bien entendu pour la zone 3 et 4 il s’agit d’un affichage « dynamique » les informations proviennent de la base de donnée (voir les tables suivantes : salles, produits). L’affichage d’un plan d’accès peut accompagner les informations.

Concernant la zone 6, nous retrouvons l’affichage des commentaires des internautes souhaitant laisser leur avis sur la location de cette salle (salle et non produit, une salle peut « être » affiliée à plusieurs produits à la fois). Il faut se rapprocher des tables suivantes : (membres, avis, salles)
Dans cette zone, si l’internaute qui se rend sur cette page n’est pas membre ou admin (il sera donc visiteur) et à la place du formulaire pour le dépôt de commentaire, nous lui afficherons la phrase suivante : « il faut être connecté pour pouvoir déposer des commentaires ».
Dans cette même zone, si l’internaute à déjà laisser un commentaire pour cette salle nous lui afficherons les commentaires des autres internautes puis un message « merci pour votre contribution » à la place du formulaire d’ajout de commentaire (un membre ne peut donc laisser qu’un commentaire par salle).

Il faudra ajouter la TVA à 20% en plus pour obtenir le prix total.

Si l’internaute qui se rend sur cette page n’est pas membre ou admin (il sera donc visiteur) et à la place du bouton « ajouter au panier », nous lui afficherons la phrase suivante : « Veuillez vous inscrire ou vous connecter pour pouvoir effectuer une réservation ».

7 Affichez une suggestion de produits similaires au produit qui est sélectionné par l’internaute afin de faciliter les recherches croisées.
Il faudra cependant proposer des produits similaires en termes de dates et de localisation choisie par l’internaute.

Exercice 7.105 : Front - Se connecter (connexion.php)

explication PHP

Description : 1 correspond à la zone du haut, nous y retrouverons le logo et la bannière.
2 correspond au menu quand un visiteur arrive (attention il est évolutif suivant l’internaute : visiteur, membre, administrateur). Ci-dessus nous sommes dans le cas visiteur.
3 correspond à l’interface de connexion afin qu’un membre puisse accéder à son compte.
4 correspond à un simple lien qui propose à un visiteur de s’inscrire afin de devenir membre.
5 correspond à la zone du bas, nous y retrouvons plusieurs liens.

Recommandations :
3 Seulement si l’internaute a le bon pseudo ET le bon mot de passe il doit pouvoir accéder à son profil « profil.php », il suffit de faire une redirection. Attention si ce n’est pas le cas, nous restons sur cette page en lui signifiant un message d’erreur.
La case « Se souvenir de moi » peut être cochée par l’utilisateur, ce choix est facultatif, mais s’il la coche vous devrez sauvegarder son pseudo pour les prochaines connexions. C'est-à-dire que s’il se déconnecte et qu’il tente de se reconnecter via cette même page « connexion.php », il ne devrait plus avoir à renseigner son pseudo.
4 Voici un simple lien qui mène vers la page « inscription.php » si le membre n’a pas encore de compte.
2 Le lien « Inscrivez-vous » sur la partie de droite pointe vers la page « inscription.php ».


Exercice 7.106 : Front - Mot de passe perdu (motdepasseperdu.php)

explication PHP

Description :
1 correspond à la zone du haut, nous y retrouverons le logo et la bannière.
2 correspond au menu quand un visiteur arrive (attention il est évolutif suivant l’internaute : visiteur, membre, administrateur). Ci-dessus nous sommes dans le cas visiteur.
3 correspond à la zone de saisie permettant à l’internaute de saisir son adresse email pour recevoir son nouveau mot de passe.
5 correspond à la zone du bas, nous y retrouvons plusieurs liens.

Recommandations : 2 Cette page n’est pas répertoriée dans la zone 2 du menu et n’est accessible qu’après s’être rendu sur la page de connexion.

3 L’internaute doit saisir l’adresse email qu’il a utilisée lors de son inscription. A partir de cette information, vous pourrez lui générer un nouveau mot de passe et lui communiquer par email sans oublier de mettre à jour la base de données. Il ne faut pas oublier de gérer le cas où l’internaute saisit une adresse email qui n’existe pas.


Exercice 7.107 : Front - Créer un nouveau compte (inscription.php)

explication PHP

Description :
1 correspond à la zone du haut, nous y retrouverons le logo et la bannière.
2 correspond au menu quand un visiteur arrive (attention il est évolutif suivant l’internaute : visiteur, membre, administrateur). Ci-dessus nous sommes dans le cas visiteur.
3 correspond au formulaire d’inscription afin qu’un membre puisse s’inscrire.
5 correspond à la zone du bas, nous y retrouvons plusieurs liens.

Recommandations :
3 Vérifier que vous avez récupéré toutes les informations du formulaire avant de les envoyer en base de données pour l’insertion dans la table membres.
Vérifier que l’adresse email soit correcte.
Le pseudo et le mot de passe doivent faire au minimum 3 caractères.

Les pages de connexion, inscription, mot de passe oublié, etc. ne doivent être accessibles uniquement en tant que visiteur (non connecté).
Si un membre connecté venait à se rendre sur ces pages par mégarde, nous le redirigerons ou lui mentionnerons qu’il est déjà connecté

Exercice 7.108 : Front - Mentions Légales (mentions.php)

Description :
3 correspond au texte des Mentions Légales

Recommandations :
Aucune recommandation particulière

Exercice 7.109 : Front - Conditions Générales de Vente (cgv.php)

Description :
3 correspond au texte des CGV

Recommandations :
Aucune recommandation particulière

Exercice 7.110 : Front - Plan du site (plan.php)

Description :
3 correspond au texte des CGV

Recommandations :
Aucune recommandation particulière

Exercice 7.111 : Front - Imprimer la page

Un simple lien pour imprimer la page courante.

Exercice 7.112 : Front - S’inscrire à la newsletter (newsletter.php)

Description :
La page contient un lien permettant de s’inscrire à la newsletter.

Recommandations :
Attention l’internaute doit être membre (ou admin) pour voir apparaître cette proposition d’abonnement. Si l’internaute est visiteur, il ne possèdera pas d’id_membre, nous l’inviterons à s’inscrire au site avant de s’abonner à la newsletter. (table : newsletter).

explication PHP

Description :
La page contient un lien permettant de s’inscrire à la newsletter.

Recommandations :
Attention l’internaute doit être membre (ou admin) pour voir apparaître cette proposition d’abonnement. Si l’internaute est visiteur, il ne possèdera pas d’id_membre, nous l’inviterons à s’inscrire au site avant de s’abonner à la newsletter. (table : newsletter).

Exercice 7.113 : Front - Contact (contact.php)

explication PHP

Description :
3 correspond à l’affichage du formulaire d’envoi d’email.

Recommandations :
3, un membre peut envoyer un message à l’administrateur du site.
Si l’internaute qui souhaite contacter l’admin est simple visiteur, il peut également lui envoyer un message, pour cela il faudra ajouter un champ « expéditeur » dans le formulaire de contact afin que l’administrateur sache à quelle adresse email il doit répondre.

Exercice 7.114 : Front - Profil (profil.php)

explication PHP

Description :
1 correspond à la zone du haut, nous y retrouverons le logo et la bannière.
2 correspond au menu (attention il est évolutif suivant l’internaute : visiteur, membre, administrateur). Ci-dessus nous sommes dans le cas membre. Vous pouvez remarquer que les liens « Connexion | Créer un nouveau compte » se sont transformés en « Se déconnecter ».
3 correspond à la zone récapitulative des informations du membre. Il est également possible qu’un membre mette à jour ses informations.
4 correspond à la zone récapitulative des dernières commandes passées sur le site.
5 correspond à la zone du bas, nous y retrouvons plusieurs liens.

Recommandations :
3 et 4 Un membre ou un admin ne peut accéder à son profil que s’il s’est connecté avant via la page « connexion.php », et lors de sa connexion nous lui « remplissons » une session, il suffit de ressortir les informations de cette session sur la page « profil.php » afin de récupérer les informations sur le membre ou l’admin. Cette page n’est donc pas disponible pour les visiteurs.
3 Le lien « mettre à jour mes informations » doit ouvrir un formulaire de modification de compte. Il sera similaire au formulaire d’inscription. Cependant les informations actuelles du membre doivent apparaitre dans les zones de saisies du formulaire afin que le membre puisse rectifier seulement ce qu’il souhaite sans devoir re-saisir chacune des informations.

Exercice 7.115 : Front - Panier (panier.php)

explication PHP

Description :
1 correspond à la zone du haut, nous y retrouverons le logo et la bannière.
2 correspond au menu (attention il est évolutif suivant l’internaute : visiteur, membre, administrateur). Ci-dessus nous sommes dans le cas membre. Vous pouvez remarquer que les liens « Connexion | Créer un nouveau compte » se sont transformés en « Se déconnecter ».
3 correspond au panier du membre ou admin.
5 correspond à la zone du bas, nous y retrouvons plusieurs liens.

Recommandations :
3 On ne peut accéder qu’à son panier en tant que membre, administrateur via la zone de menu 2 ou alors en étant envoyé par le bouton « ajouter au panier » sur les pages suivantes :
« index.php » - « reservation.php » - « reservation_details.php » - « recherche.php »

Si l’internaute n’est pas connecté (donc simple visiteur) et se retrouve sur la page « panier.php » nous lui afficherons « vous devez vous connecter avant d'accéder à votre panier ».
Si l’internaute (membre ou admin) qui accède à son panier tente d’ajouter deux fois le même produit, nous lui afficherons « ce produit est déjà dans votre panier ». Effectivement il ne peut réserver deux fois le même produit.

Vider mon panier est un lien vers la même page « panier.php » qui déclenche une action afin de « vider » le contenu de son panier.
La croix « x » à coté du produit est un lien permettant de « retirer » un des produit(s) du panier sans affecter le restant des produits dans le panier.

L’internaute peut payer (seulement s’il est membre ou admin) et surtout s’il a coché la case « J’accepte les conditions générales de vente » le lien « voir » mène vers « cgv.php ».
Si l’internaute utilise un code promo, il faudra impérativement vérifier si le code promo qui l’utilise est associé au produit qu’il commande et si c’est le cas porter les répercussions sur le prix de ce produit.
L’idéal serait de recharger la page avant validation définitive du panier et d’afficher la réduction réalisée en euros, le nouveau prix ainsi que le % économisé entre le prix de base et le nouveau prix réduit calculé.

C’est seulement après avoir accepté les CGV et avoir payé qu’une occurrence se crée dans les tables commandes et details_commandes.
C’est également à ce moment-là que l’état du produit passe à 1 pour cet id de produit dans la table produit. (0 correspond à « réservable » donc « disponible », 1 correspond à « réserver » et par conséquent « n’étant plus disponible »).
Logiquement ce produit à présent payé ne doit plus apparaître dans les produits « réservables » sur les pages suivantes : « index.php » - « reservation.php » - « reservation_details.php » - « recherche.php »

Après avoir payé, le membre connecté reçoit un email de confirmation lui indiquant son numéro de commande et en pièce jointe le récapitulatif du produit acheté sur une facture générée au format PDF (cette facture devra également être consultable sur l’espace profil du membre).

Exercice 7.2 : Les pages web côté BACK

Exercice 7.201 : Back - Gestion des salles (gestion_salles.php)

explication PHP

Description :
2 correspond au menu quand un administrateur arrive (attention il est évolutif suivant l’internaute : visiteur, membre, administrateur). Ci-dessus nous sommes dans le cas administrateur.

3, Les deux liens pointent sur la même page : « gestion_salles.php » et déclenchent une action.

Recommandations :
Cette page n’est disponible que si l’on est administrateur (vous devez penser à verrouiller l’accès dans tous les autres cas).

3.1, dans cette zone nous avons un premier lien, si l’administrateur clique sur « ajouter une salle » un formulaire apparaît en dessous et il doit pouvoir entrer des informations pour ajouter une salle (ces informations sont ensuite sauvegardées dans la table salle).

3.2, nous avons également un second lien, si l’administrateur clique dessus « affichage des salles » il doit pouvoir observer toutes les salles dont il dispose (il s’agit du contenu de la table salle).

Suite à cet affichage, il pourra modifier une salle existante si l’administrateur le souhaite en cliquant sur un lien « modification », lors de cette action, il doit retrouver toutes les valeurs actuelles de la salle qu’il s’apprête à changer dans le formulaire de modification affiché.
Nous lui donnerons également la possibilité de supprimer une salle avec toutes les conséquences que cela implique.


Exercice 7.202 : Back - Gestion des produits (gestion_produits.php)

explication PHP

Description :
2 correspond au menu quand un administrateur arrive (attention il est évolutif suivant l’internaute : visiteur, membre, administrateur). Ci-dessus nous sommes dans le cas administrateur.

3, Les deux liens pointent sur la même page : « gestion_produits.php » et déclenchent une action.

Recommandations :
Cette page n’est disponible que si l’on est administrateur (vous devez penser à verrouiller l’accès dans tous les autres cas).

3, dans cette zone nous avons un premier lien, si l’administrateur clique sur « ajouter un produit » un formulaire apparaît en dessous et il doit pouvoir entrer des informations pour ajouter un produit (ces informations sont ensuite sauvegardées dans la table produit).
Voici un exemple du formulaire attendu :
explication PHP

La date de départ doit naturellement être supérieure à la date d’arrivée.
La date d’arrivée doit être supérieure à la date du jour.

Suite à la validation de ce formulaire, il faudra donc lancer une insertion dans la table produit afin que les deux (produits et salles) soient bien reliés.
Attention : une salle peut être associée à plusieurs produits à la fois.
Exemple :
Salles Produits Description
id_salle : 1 salle Cézanne – paris – id_produit : 1
Date_arrivee : 2015-11-22
Date_arrivee : 2015-11-27
Prix : 550 euros
L’id_salle 1 est relié avec l’id_produit 1. C'est-à-dire que la salle Cézanne à Paris sera disponible du 22 au 27 novembre pour 550 euros
id_salle : 1 salle Cézanne – paris – id_produit : 2
Date_arrivee : 2015-11-29
Date_arrivee : 2015-12-03
Prix : 600 euros
L’id_salle 1 est relié avec l’id_produit 2. C'est-à-dire que cette même salle Cézanne à Paris sera disponible la semaine suivante du 29 novembre au 03 décembre pour 600 euros.
id_salle : 2 salle Mozart – paris – id_produit : 3
Date_arrivee : 2015-11-29
Date_arrivee : 2015-12-03
Prix : 380 euros
L’id_salle 2 est relié avec l’id_produit 3. C'est-à-dire que la salle Mozart à Paris sera disponible du 29 nov au 03 déc pour 380 euros

Une salle est donc susceptible d’appartenir à plusieurs produits. En revanche chaque produit est unique.

3, nous avons également un second lien, si l’administrateur clique dessus « affichage des produits » il doit pouvoir observer tous les produits dont il dispose (il s’agit du contenu de la table produit).

De plus, il doit pouvoir cliquer sur les entêtes suivantes : « date_arrivee » – « date_depart » ou encore l’entête « prix » afin d’afficher les produits dans l’ordre croissant/décroissant des prix.
L’administrateur doit aussi pouvoir modifier et supprimer ses produits.


Exercice 7.203 : Back - Gestion des membres (gestion_membres.php)

explication PHP

Description :
3 correspond à l’affichage des membres du site.
4 correspond à l’affichage d’un nouveau formulaire d’inscription.

Recommandations :
Cette page n’est disponible que si l’on est administrateur (vous devez penser à verrouiller l’accès dans tous les autres cas).

3, nous avons l’affichage des membres (il s’agit du contenu de la table membres).
Pour chaque membre, l’administrateur dispose d’un lien sous forme d’une croix représentée par un « X » qui peut lui permettre de supprimer le compte d’un membre.

4, L’administrateur à la possibilité de créer un nouveau compte « administrateur » à l’un de ses collaborateurs. En cliquant sur ce lien, un formulaire d’inscription apparaît afin qu’il puisse rentrer les informations qui permettront de créer ce nouveau compte.


Exercice 7.204 : Back - Gestion des commandes (gestion_commandes.php)

explication PHP

Description :
3 correspond à l’affichage des commandes passées (et payées) sur notre site.
Recommandations :
Cette page n’est disponible que si l’on est administrateur (vous devez penser à verrouiller l’accès dans tous les autres cas).

3, nous avons l’affichage des commandes (il s’agit du contenu de la table commandes).
Nous affichons à titre informatif le chiffre d’affaires (CA).

Les données sous la colonne « id_commande » sont sous forme de lien cliquable et permettent d’afficher le détail d’une commande (sur la même page).
Exemple :
explication PHP


Exercice 7.205 : Back - Gestion des avis (gestion_avis.php)

explication PHP

Description :
3 correspond à l’affichage des avis laissés sur le site.

Recommandations :
Cette page n’est disponible que si l’on est administrateur (vous devez penser à verrouiller l’accès dans tous les autres cas).

3, nous avons l’affichage des avis laissés sur le site (il s’agit du contenu de la table avis).
Pour chaque avis, l’administrateur dispose d’un lien sous forme d’une croix représentée par un « X » qui peut lui permettre de supprimer l’avis d’un membre s’il le juge incorrect.


Exercice 7.206 : Back - Gestion des codes promo (gestion_promos.php)

explication PHP

Description :
2 correspond au menu quand un administrateur arrive (attention il est évolutif suivant l’internaute : visiteur, membre, administrateur). Ci-dessus nous sommes dans le cas administrateur.

3, Les deux liens pointent sur la même page : « gestion_promos.php » et déclenchent une action.

Recommandations :
Cette page n’est disponible que si l’on est administrateur (vous devez penser à verrouiller l’accès dans tous les autres cas).

3, dans cette zone nous avons un premier lien, si l’administrateur clique sur « ajouter un code promo » un formulaire apparaît en dessous et il doit pouvoir entrer des informations pour ajouter un code promo (ces informations sont ensuite sauvegardées dans la table promotions).

3, nous avons également un second lien, si l’administrateur clique dessus « affichage des codes promo » il doit pouvoir observer tous les codes promo dont il dispose (il s’agit du contenu de la table promotions).

L’administrateur doit également pouvoir supprimer des codes de promotion (il faudra alors porter une attention particulière aux produits qui y sont éventuellement associés).

L’administrateur enverra les codes de promotion qu’il souhaite diffuser lors de l’envoi de la newsletter.


Exercice 7.207 : Back - Statistiques (statistiques.php)

explication PHP

Description :
2 correspond au menu quand un administrateur arrive (attention il est évolutif suivant l’internaute : visiteur, membre, administrateur). Ci-dessus nous sommes dans le cas administrateur.

3, Les trois liens pointent sur la même page : « statistiques.php » et déclenchent une action.

Recommandations :
Cette page n’est disponible que si l’on est administrateur (vous devez penser à verrouiller l’accès dans tous les autres cas).

3, dans cette zone nous avons trois liens permettant à l’administrateur d’avoir des statistiques selon les différentes informations qu’il demande.
L’affichage des résultats doit se faire sur la même page.


Exercice 7.208 : Back - Envoyer la newsletter (envoi_newsletter.php)

explication PHP

Description :
3 correspond à l’affichage du formulaire d’envoi d’email
Recommandations :
Cette page n’est disponible que si l’on est administrateur (vous devez penser à verrouiller l’accès dans tous les autres cas).

3, Nous pouvons choisir un message et ce message doit s’envoyer à l’ensemble des membres « abonné » à la newsletter (autrement dit, il faut faire une correspondance entre la table newsletter, et la table membres).


Exercice 7.209 : Back - La base de données

Voici notre modélisation :

salle
- id_salle (int 5) PK - AI
- pays (varchar 20)
- ville (varchar 20)
- adresse (varchar 50)
- cp (varchar 5)
- titre (varchar 200)
- description (text)
- photo (varchar 200)
- capacite (int 3)
- categorie (enum)
produit
- id_produit (int 5) PK - AI
- date_arrivee (datetime)
- date_depart (datetime)
- id_salle (int 5)
- id_promo (int 2)
- prix(int 5)
- etat (int 1)
promotion
- id_promo (int 2) PK - AI
- code_promo (varchar 6)
- reduction (int 5)
membre
- id_membre (int 5) PK - AI
- pseudo (varchar 15)
- mdp (varchar 60)
- nom (varchar 20)
- prenom (varchar 20)
- email (varchar 30)
- sexe (enum : m,f)
- ville (varchar 20)
- cp (int 5)
- adresse (varchar 30)
- statut (int 1)
avis
- id_avis (int 5) PK - AI
- id_membre (int 5)
- id_salle (int 5)
- commentaire (text)
- note (int 2)
- date (datetime)
commande
- id_commande (int 6) PK - AI
- montant (int 5)
- id_membre (int 5)
- date (datetime)
details_commande
- id_details_commande (int 6) PK - AI
- id_commande (int 6)
- id_produit (int 5)
newsletter
- id_newsletter (int 5) PK - AI
- id_membre (int 5)