Exercices les bases de données MySQL et PHP : Série 01
Sommaire
- 1- Objectifs
- 2- Rappel
- 3- Exercice 01
- 3.1- Énoncé
- 4- Créer la base de données avec PHPMyAdmin
- 4.1- Créez une table voiture contiendra les colonnes suivantes.
- 4.2- Créez une table clients contiendra les colonnes suivantes.
- 4.3- Créez une table locations contiendra les colonnes suivantes.
- 4.4- Vérifier que les relations sont correctes entre les trois tables
- 4.5- Insérez des données en utilisant l’onglet insérer de PhpMyAdmin.
- 5- Créez les scripts de connexion PHP
- 6- Insertion des données
- 7- Insérer plusieurs lignes dans une table
- 8- Créer les fichiers d'affichage des données
- 9- Créer les fichiers de recherche des données
- 10- Créer un menu de navigation
- 10.1- Solution
- 11- Exercice 02
- 11.1- Énoncé
- 11.2- Solution
- 12- Exercice 03
- 12.1- Énoncé
- 12.2- Solution
- 12.2.1- Cours PHP
Exercices les bases de données MySQL et PHP : Série 01
-
Objectifs
- Être capable d’utiliser les API php pour accéder à une base de données MySQL
-
Rappel
- La fonction
define()
définit une constante. - Les constantes ressemblent beaucoup aux variables, à l’exception des différences suivantes:
- La valeur d’une constante ne peut pas être modifiée une fois qu’elle est définie
- Les noms constants n’ont pas besoin d’un signe dollar ($)
- Les constantes sont accessibles quelle que soit la portée
- Les valeurs constantes ne peuvent être que des chaînes et des nombres
-
Exercice 01
-
Énoncé
-
Créer la base de données avec PHPMyAdmin
- Connectez vous à votre base de données MySQL, à l’aide de l’interface PhpMyAdmin http://localhost/phpmyadmin.
- Créez une base de données « location_de_voiture »
-
Créez une table voiture contiendra les colonnes suivantes.
- immatriculation de type VARCHAR et de longueur maximale 20, défini comme la clé primaire (Index : Primary)
- marque de type VARCHAR est de longueur maximale 20.
- Modele de type VARCHAR est de longueur maximale 20.
- Cylindree de type SMALLINT est cylindrée en cm3.
- dateachat de type DATE
-
Créez une table clients contiendra les colonnes suivantes.
- IdClient de type SMALLINT est le numéro client unique
- Nom de type VARCHAR(40) est le nom du client
- Prenom de type VARCHAR(40) est le prénom du client
- CodePostal de type VARCHAR(10) est le Code postal
- Localite de type VARCHAR(50) est la localité de résidence
- Rue de type VARCHAR(80) est l’adresse
- Numero de type VARCHAR(10) est le numéro de maison
- Telephone de type VARCHAR(40) est le numéro de téléphone
- Email de type VARCHAR(50) est l’adresse mail
-
Créez une table locations contiendra les colonnes suivantes.
- IdClient de type SMALLINT est le numéro client unique
- IdLocation de type SMALLINT est le numéro client unique
- immatriculation de type VARCHAR et de longueur maximale 20
- DateDebut de type DATETIME Date et heure de début
- DateFin DATETIME Date de type et heure de fin prévue
- DateRentree DATETIME Date de rentrée effective du véhicule (pour surtaxe)
- Assurance BOOL Indique si une assurance complémentaire a été prise
-
Vérifier que les relations sont correctes entre les trois tables
- Les noms des champs sont comme des noms de variables, ils ne doivent pas contenir d’accents.
- MySQL est sensible à la casse (minuscules/majuscules).
-
Insérez des données en utilisant l’onglet insérer de PhpMyAdmin.
-
Créez les scripts de connexion PHP
- Une fois que les tables de la base de données sont créées, il est temps d’interroger cette base de données, et par conséquent afficher les résultats sur des pages WEB
- Créez un fichier db_identifiants.php. Ce fichier contiendra une définition des constantes suivant: DB_SERVER, DB_USER, DB_PASS, DB_NAME.
- Créez un fichier db_connexion.php. Ce fichier contiendra deux fonctions php pour ouvrir et fermer la connexion à la base de données.
- Les fonctions d’interrogation et d’extraction des données ne sont pour l’instant pas implémentées dans ce fichier et sont donc à la charge des fonctions principales de l’application.
- il faut traiter l’ensemble des erreurs en provenance de la base de données.
-
Insertion des données
- Ecrire une page web en PHP nommée "formulaireVoiture.php" qui affiche un formulaire permettant de saisir les données de la table voiture. Lorsque l’on clique sur le bouton Ajoute du formulaire, on appelle une page ajouteVoiture.php qui ajoute les nouvelles données dans la base.
- Modifier la page ajouteVoiture.php afin de ne soumettre le formulaire uniquement si tous les champs sont remplis et que le champ cylindrée (chevaux) est bien un entier.
- Faire en sorte de centrer le contenu des pages "formulaireVoitures.php": (utiliser bootstrap).
- Dans une nouvelle page créer un formulaire permettant l’insertion de nouvelles données dans la table client "formulaireClients.php".
- Un nouveau formulaire permettant l’insertion de nouvelles données dans la table location, via une nouvelle page php "formulaireLocation.php".
-
Insérer plusieurs lignes dans une table
- Insérez un tableau multidimensionnel dans la base de données via une requête préparée
-
Créer les fichiers d’affichage des données
- Dans cet étape nous allons réaliser trois fichiers PHP
- "affichageVoitures.php":Contient un tableau permettant d’afficher la liste des voitures enregistrés dans la base.
- "affichageClients.php":Contient un tableau permettant d’afficher la liste des clients enregistrés dans la base.
- "affichageLocations.php":Contient un tableau permettant d’afficher la liste des locations enregistrés dans la base.
- Pour chaque fichier (tableau) afficher le contenu en le découpant sur plusieurs pages
- Le travail demandé est donné par la figure suivante:
-
Créer les fichiers de recherche des données
- Créer un formulaire de recherche permettant de retrouver tous les clients qui ont loué un type de véhicule de marque et de modèle donnés. Afficher les résultats sous forme de tableau HTML5.
- Créer un formulaire de recherche permettant de retrouver tous les véhicules louées par une personne donnée. Afficher les résultats sous forme de tableau HTML.
-
Créer un menu de navigation
- Créer un menu de navigation pour votre application
-
Solution
- Essayez de faire l’exercice de votre côté avant de regarder la Solution !
-
Exercice 02
-
Énoncé
- Considérant une base de données VEHICULE_CIRCULATION qui enregistre les certificats d’immatriculation des véhicules en circulation (carte grise). La base contient 4 tables Modèle, Voiture , Propriétaire et utilisateur. Elle est présentée comme l’image ci-dessous.
- Essayez de créer la base avec les tables nécessaires. La table propriétaire contient une clé secondaire qui se réfère à la table voiture. La table voiture contient elle-même une clé secondaire qui est en relation aussi avec la table modèle. En fin la table utilisateur est en relation avec toutes les tables
- Commencez par la création d’un formulaire de connexion
- Créer un fichier HTML ou PHP contenant la structure du formulaire;
- Créer un fichier CSS pour définir le style, si vous décidez d’utiliser Bootstrap n’utilisez pas un CDN;
- Créer un fichier de login PHP qui va vérifie les champs de formulaire si ils correspondent aux valeurs de la table dans la base de données;
- Créer un fichier PHP de la page principale et de la déconnexion ainsi la page de récupération de mot de passe .
- Créez une page contenant un formulaire qui sert à remplir la table Modèle avec les données suivantes :
- La valeur du dernier champs est la valeur du code utilisateur récupérée dans une session lors de la connexion
- Créer une page contenant un formulaire permettant l’insertion simultanée des coordonnées d’une personne dans la table propriétaire dans la page nouveau_proprietaire.php. Il doit contenir les zones de saisie des coordonnées de la personne et une liste déroulante remplies dynamiquement à partir de la base de données contenant la liste des matricules des voitures existants dans la table voiture.
- Créer un script permettant d’afficher le contenu de la table modèle dans un tableau HTML dans une page nommée liste_modele.php. Les résultats doivent être triés par marque : La requête va être sous la forme «
SELECT * FROM modele ORDER BY marque
« . - Créer un formulaire de recherche rechercheVehicule.php permettant de retrouver tous les véhicules possédés par une personne donnée. Afficher les résultats sous forme de tableau HTML en précisant les détails suivants : couleur, kilométrage, marque, modèle, puissance et carburant. Il va y avoir une jointure entre les trois tables propriétaire, voiture et modèle et la requête va être sous la forme suivante :
- Mettre en place un menu de navigation pour accéder aux différentes pages (1 affichage par entité).
-
Solution
- Essayez de faire l’exercice de votre côté avant de regarder la Solution !
-
Exercice 03
-
Énoncé
- Création de la base de données
- Considérant une base de données monForum qui enregistre les messages envoyés par des utilisateurs. La base contient 4 tables messages, themes , sujets et utilisateur. Elle est présentée comme l’image ci-dessous.
- Maquettage de l’application
- Avant de programmer les pages du forum en PHP avec les accès à la base de données MySQL, nous allons passer par une phase de maquettage de l’application.
- Il s’agit de créer les pages avec des valeurs statiques dans le but de réaliser l’interface et la navigation entre pages.
- Pour notre forum de discussion, nous aurons besoin des pages suivantes :
- Login : cette page est la première page que l’utilisateur verra, il devra s’authentifier pour utiliser le forum
- Inscription : cette page permet à un nouvel utilisateur de s’inscrire, elle est accessible à partir de la page login
- Liste thèmes : cette page s’affiche lorsque l’utilisateur se sera authentifié, elle affiche la liste des thèmes disponibles sur le forum
- Liste sujets : cette page affiche l’ensemble des sujets de discussions appartenant à un thème.
- Liste messages : cette page affiche le fil de discussion d’un sujet.
- Ecriture message : cette page est appelée lorsque l’utilisateur veut répondre sur un sujet ou, créer un nouveau sujet de discussion
- Les pages du forum
- Pour notre forum, nous avons donc besoins de six pages, que nous allons décrire.
- La page d’identification
- Ceci est la page d’entrée du forum; toute personne voulant utiliser le forum doit se signer (et donc doit être inscrite).
- Cette page contient donc un formulaire, avec deux champs saisissables :
- Code user : représentant le pseudo de l’utilisateur
- Mot de passe : son mot de passe lui permettant de se connecter.
- Il y a deux boutons :
- Se connecter : qui permet d’effectuer la connexion proprement dit, et d’accéder au forum
- J’ai perdu mon mot de passe : qui permet de renvoyer à l’utilisateur son mot de passe par email.
- Pour les personnes qui ne sont pas encore inscrites, il y a également un lien vers la page d’inscription.
- La page d’inscription
- Cette page est tout simplement le formulaire permettant à une personne de s’inscrire sur le forum.
- Ce formulaire est composé de 6 champs saisissables et obligatoires :
- Il y a deux boutons :
- La liste des thèmes
- Cette page liste les thèmes disponibles sur le forum, elle est constituée des éléments suivants :
- La liste des sujets
- Cette page liste les sujets postés pour un thème donné sur le forum, elle est constituée des éléments suivants :
- Les messages concernant un sujet
- Cette page affiche la discussion concernant un sujet, elle est constituée des éléments suivants :
- L’édition d’un message
- Cette page permet la création d’un sujet ou d’effectuer une réponse sur un sujet donné, elle est constituée des éléments suivants :
- La barre de navigation :
- Un formulaire composé de deux champs saisissables :
- Deux boutons :
- Le tableau dressant la discussion, dans l’ordre inverse d’arrivée :
-
Solution
- Essayez de faire l’exercice de votre côté avant de regarder la Solution !
cdeModele | modele | marque | puissance | carburant |
---|---|---|---|---|
1 | 108 | peugeot | 4CV | Essence |
2 | 508 | peugeot | 7CV | Essence |
3 | 308 | peugeot | 4CV | Essence |
4 | Megane Coupé | renault | 5CV | Diesel |
5 | Laguna | renault | 6CV | Diesel |
6 | Clio | renault | 4CV | Essence |
7 | Rio | Kia | 5CV | Essence |
8 | Sorento | Kia | 12CV | Diezel |
9 | Mazda2 | Mazda2 | 6CV | Essence |
10 | Mazda3 | Mazda3 | 6CV | Essence |
-
• Le Nom de l’utilisateur
• Le Prénom de l’utilisateur
• L’email de l’utilisateur (pour pouvoir lui renvoyer son mot de passe)
• Le code user : l’utilisateur devra choisir un pseudo qui lui servira pour se connecter.
• Le mot de passe : l’utilisateur devra choisir un mot de passe qui lui servira pour se connecter.
• La confirmation : l’utilisateur devra ressaisir son mot de passe ici (vérifier l’égalité avec le champ précédent)
-
• S’inscrire : qui permet d’enregistrer les données de l’utilisateur, de plus cela effectue la connexion au forum
• Rétablir : qui permet de réinitialiser le formulaire.
-
• La barre de navigation : la seule option proposée est Quitter, qui renvoi vers la page d’identification.
• Le tableau dressant la liste des thèmes :
• Nom du thème (lien vers la page des sujets)
• Description du thème (lien vers la page des sujets)
• Le nombre de sujets postés
• La date du dernier message
-
• La barre de navigation :
• Quitter, qui renvoi vers la page d’identification.
• Thèmes, qui renvoi vers la page de liste des thèmes du forum
• Le tableau dressant la liste des sujets :
• Auteur du sujet
• Titre du sujet (lien vers la page des messages)
• Le nombre de réponses au sujet
• La date du dernier message concernant le sujet
• Un bouton Nouveau : qui permet de poster un nouveau sujet (lien vers Edition Message).
-
• La barre de navigation :
• Quitter, qui renvoi vers la page d’identification.
• Thèmes, qui renvoi vers la page de liste des thèmes du forum
• Sujets, qui renvoi vers la page des sujets concernant le thème en cours
• Le tableau dressant la discussion, et ceci dans l’ordre d’arrivé :
• Auteur du message
• Titre du message
• Date du message
• Texte du message
• Un bouton Répondre : qui permet d’ajouter un message dans la discussion (lien vers Edition Message).
-
• Quitter, qui renvoi vers la page d’identification.
• Thèmes, qui renvoi vers la page de liste des thèmes du forum
• Sujets, qui renvoi vers la page des sujets concernant le thème en cours
• Messages, qui renvoi vers la page affichant la discussion en cours (dans le cas ou l’on répond à un message)
-
• Un titre de message (pré alimenté avec « RE : titre sujet » dans le cas d’une réponse)
• Une zone de texte, ou l’utilisateur saisira son message.
-
• Un bouton Envoyer qui permet d’enregistre un message et de revenir ver la page de la discussion.
• Un bouton Rétablir qui permet de réinitialiser le formulaire.
-
• Auteur du message
• Titre du message
• Date du message
• Texte du message