0% ont trouvé ce document utile (0 vote)
374 vues8 pages

TP3 - PHP-MySQL - UPB 22-231

Ce document décrit la création d'une base de données MySQL avec des tables étudiants et filières ainsi que des scripts PHP pour se connecter et interagir avec la base de données, notamment pour afficher, ajouter, modifier et supprimer des données.

Transféré par

ismael Bakayoko
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
374 vues8 pages

TP3 - PHP-MySQL - UPB 22-231

Ce document décrit la création d'une base de données MySQL avec des tables étudiants et filières ainsi que des scripts PHP pour se connecter et interagir avec la base de données, notamment pour afficher, ajouter, modifier et supprimer des données.

Transféré par

ismael Bakayoko
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
Vous êtes sur la page 1/ 8

Université Polytechnique de Bingerville (UPB)

Licence 2 MIAGE
Module : Technologies WEB 2
TP 3 : PHP/MySQL

Exercice 0 : Mise en place

Partie 1 : Création de la BD

1) Créer une base de données « upb_bd_td_techno_web ». Vous pouvez utiliser phpmyadmin.


2) En utilisant le script SQL ci-dessous, Créer la table « etudiants ».

DROP TABLE IF EXISTS `etudiants`;


CREATE TABLE IF NOT EXISTS `etudiants` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`nom` varchar(45) NOT NULL,
`prenoms` varchar(45) NOT NULL,
`sexe` enum('M','F') DEFAULT NULL,
`email` varchar(45) NOT NULL,
`password` varchar(45) DEFAULT NULL,
`contact` varchar(20) DEFAULT NULL,
`quartier` varchar(45) DEFAULT NULL,
`presentation` longtext,
`photo` varchar(100) DEFAULT NULL,
`id_filiere` int(11) DEFAULT NULL,
`date_ajout` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
`date_modif` datetime DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `email` (`email`),
KEY `id_filiere` (`id_filiere`)
) ENGINE=MyISAM AUTO_INCREMENT=8 DEFAULT CHARSET=utf8;

3) En utilisant le script SQL ci-dessous, Créer la table « filieres ».

DROP TABLE IF EXISTS `filieres`;


CREATE TABLE IF NOT EXISTS `filieres` (
`id_filiere` int(11) NOT NULL AUTO_INCREMENT,
`nom_filiere` varchar(100) NOT NULL,
`description_filiere` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id_filiere`)
) ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;

4) Renseigner la table « etudiants » avec des informations fictives/réelles. Vous pouvez utiliser le script ci-
dessous :
INSERT INTO `etudiants` (`id`, `nom`, `prenoms`, `sexe`, `email`, `password`, `contact`, `quartier`,
`presentation`, `id_filiere`, `date_ajout`, `date_modif`) VALUES
(1, 'ACKA', 'KOUAKOU JEAN YVES', 'M', '[email protected]', '2022L2', NULL, 'COCODY', 'TEST TEST TEST TEST
TEST TEST TEST KOUAKOU JEAN YVES', 1, '2022-02-16 20:39:56', NULL),
(2, 'AGBEDJE', 'OSSOHOU ABACUC', 'M', '[email protected]', '2022L2', NULL, 'YOPOUGON', 'TEST TEST
TEST TEST TEST TEST TEST ', 1, '2022-02-16 20:39:56', NULL),
(3, 'AGNIN', 'JOEL JEAN DAVID', 'M', '[email protected]', '2022L2', NULL, 'PORT-BOUET', 'TEST TEST TEST TEST
TEST TEST TEST ', 1, '2022-02-16 20:42:39', NULL),
(4, 'KOUAKOU', 'ANNAYAH AKISSI', 'F', '[email protected]', '2022L2', NULL, 'ABOBO', 'TEST TEST TEST
TEST TEST TEST TEST', 1, '2022-02-16 20:46:18', NULL),
(5, 'COULIBALY', 'ROKIA', 'F', '[email protected]', '2022L2', NULL, 'ANYAMA', 'TEST TEST TEST TEST
TEST TEST TEST', 1, '2022-02-16 20:46:18', NULL),
(6, 'SAKO', 'KADER', 'M', '[email protected]', '2022L2', NULL, 'KOUMASSI', 'TEST TEST TEST TEST TEST TEST
TEST', 1, '2022-02-16 20:49:14', NULL),
(7, 'TESSOUGUE', 'AWA', 'F', '[email protected]', '2022L2', NULL, 'BINGERVILLE', 'TEST TEST TEST TEST
TEST TEST TEST', 1, '2022-02-16 20:49:14', NULL);

5) Renseigner la table « filieres » avec des informations fictives/réelles. Vous pouvez utiliser le script ci-
dessous :

INSERT INTO `filieres` (`id_filiere`, `nom_filiere`, `description_filiere`) VALUES


(1, 'MIAGE', 'Méthodes Informatiques Appliquées à la Gestion des Entreprises'),
(2, 'SEA', NULL);

Partie 2: Connexion à la BD

PDO (PHP Data Object) est une bibliothèque de fonctions PHP permettant d’accéder à n’importe quelle base de
données. Dans ce TP, pour se connecter à la base de données, nous utiliserons PDO.

Syntaxe : Exemple de script PHP permettant d’afficher le contenu de la table « etudiants ».

1) Pour se connecter à une base de données avec PDO, on utilise la syntaxe suivante :

$db = new PDO('mysql:host=localhost;dbname=nom-base-de-données;charset=utf8', 'user', 'Mot-


de-passe');

NB :
User : utilisateur de la base de données, ici dans notre cas on utilisera l’utilisateur root

2) Utilisation des blocs try et catch pour tester la présence d'erreurs : En cas d'erreur, PDO renvoie ce qu'on
appelle une exception, qui permet de « capturer » l'erreur.

3) Faire des requêtes avec l’objet PDO :


- Pour effectuer une requête à l'aide de l'objet PDO, on utilise premièrement la méthode prepare()
Exemple :
$etudiantsStatement = $db->prepare('SELECT * FROM etudiants');

- Ensuite on utilise la méthode execute() sur le résultat de la méthode prepare()


- Dans le cas d’une requêtes SELECT, on utilise ensuite la méthode fetch() ou fetchAll() pour récupérer les
données sous forme de tableau.

Exemples :

4) Pratique : Créer, tester et expliquer le script « prepa_tp3.php » ci-dessous :

<?php

try

/* $db = new PDO('mysql:host=localhost;dbname=nom-base-de-données;charset=utf8', 'user', 'Mot-de-


passe'); */

$db = new PDO('mysql:host=localhost;dbname=upb_bd_td_techno_web;charset=utf8', 'root', '');

catch (Exception $e)

die('Erreur : ' . $e->getMessage());

// On récupère tout le contenu de la table etudiants

$sqlQuery = 'SELECT * FROM etudiants';

$etudiantsStatement = $db->prepare($sqlQuery);

$etudiantsStatement->execute();

$etudiants = $etudiantsStatement->fetchAll();

// On affiche nom et prenoms chaque étudiant

foreach ($etudiants as $etudiant) {

?>

<p><?php echo $etudiant['nom'].' '. $etudiant['prenoms']; ?></p>

<?php

?>
5) Pratique : Exemple de script d’insertion

// Ecriture de la requête

$sqlQuery_2 = 'INSERT INTO filieres(nom_filiere, description_filiere) VALUES (:nom_filiere, :description_filiere)';

// Préparation

$insertFiliere = $db->prepare($sqlQuery_2);

// Exécution ! La filière est maintenant en base de données

$insertFiliere->execute([

'nom_filiere' => 'MP',


'description_filiere' => 'Maths Physique',
]);

6) Pratique : Exemple de script de mise à jour

// Ecriture de la requête

$sqlQuery_2 = 'UPDATE filieres SET nom_filiere = : nom_filiere, description_filiere = : description_filiere, WHERE id =


:id';

// Préparation

$insertEtudiant = $db->prepare($sqlQuery_2);

// Exécution

$insertEtudiant->execute([

nom_filiere => MPSI,


'prenoms' => 'Maths Physique Science Industrielle',
'id' => 3,
]);

7) Pratique : Exemple de script de suppression

$sqlQuery_3 = 'DELETE FROM etudiants WHERE id=:id';

$etudiantsStatement = $db->prepare($sqlQuery_3);

$etudiantsStatement->execute(["id" => 3]);

Exercice 1 : PHP – Connexion à une Base de Données


1) Créer la page « ajout_filiere.php » contenant un formulaire permettant d’ajouter une nouvelle filière dans la
base de données.
o Vérifier que les champs ne sont pas vides :
Exemple :
if(isset($_POST["valider"]) AND !empty($_POST["nom_filiere"] AND $_POST["description_filiere"]))

o Vérifier que la filière n’est pas déjà présente dans la base.


2) Créer la page « ajout_etudiant.php » permettant d’ajouter un étudiant dans la base de données

o N’ajouter pas le mot de passe en clair dans la base de données ! Encrypter le en md5.
Exemple :
$password = md5($_POST["password"]);

o Vérifier que les champs ne sont pas vides


o Vérifier que l'utilisateur n'est pas déjà présent dans la base.
Indication :
On pourra faire une requête pour vérifier si l’email renseigné n’est pas déjà dans la base de
données.
o Empêcher l'utilisateur d'injecter du code dans la base de données.
o Si l'insertion fonctionne, afficher une notification de succès. Sinon afficher une notification d’erreur.
3) Créer une page « liste_etudiant.php » qui permet d’afficher la liste des étudiants dans un tableau (Afficher
tous les étudiants enregistrés dans la table « etudiants »).
o Ajouter un lien vers la page ajout_etudiant.php au-dessus du tableau
o Prévoir les liens ou boutons permettant d’accéder aux pages : details_etudiant.php ,
modifier_etudiant.php et supprimer_etudiant.php

Indication :
<a href="details_etudiant.php?id_etudiant=<?php echo $etudiant['id']; ?>">Voir plus </a>
o .

4) Créer une page details_etudiant.php qui afficher les informations d’un seul étudiant, cette page doit
également afficher un formulaire d’ajout d’une image
o Ajouter un input type= ‘file’ dans le formulaire
o Sauvegarder la photo dans un dossier « uploads»
o Sauvegarder le nom du fichier image dans la BD
Figure 1: Exemple page detail_etudiant.php

5) Créer une page modifier_etudiant.php qui permet d’afficher un formulaire pré rempli (avec les informations
de l’étudiant qu’on souhaite modifier).
o Vérifier la présence de la variable $_GET['id_etudiant'], si cette variable n’existe pas alors rediriger
sur la page « liste_etudiant.php »
o Faire la mise à jour des informations dans la BD.

6) Créer la page supprimer_etudiant.php qui permet de supprimer les informations d’un étudiant en BD
o Vérifier la présence de la variable $_GET['id_etudiant'], si cette variable n’existe pas alors rediriger
sur la page « liste_etudiant.php
o Supprimer les informations de l’étudiant correspondant à l’id_etudiant reçu.

7) Créer le script « traitement_image.php » permettant d’enregistrer la photo de l’étudiant dans un dossier


« uploads » et sauvegarder le chemin du fichier image dans la base de données en mettant à jour de la
colonne « photo » de l’étudiant concerné.
o Assurez-vous que le formulaire de la page details_etudiant.php permettant d’uploader la photo de
l’étudiant possède l’attribut « enctype="multipart/form-data" »
o Dans le script « traitement_image.php, vous pouvez :
 Vérifier si le fichier image est une image réelle ou une fausse image en utilisant la
méthode getimagesize() qui Retourne la taille d'une image
Ex : getimagesize($_FILES["fileToUpload"]["tmp_name"])

 Vérifier si le fichier existe déjà grâce à la fonction file_exists() qui Vérifie si un fichier ou un
dossier existe
 Télécharger le fichier avec la methode move_uploaded_file() qui permet de Déplace un
fichier téléchargé
Syntaxe :
move_uploaded_file(string $from, string $to): bool

Exercice 2 : PHP – MySQL—Bootstrap – POO – Jquery


On souhaite refaire l’exercice précédent en utilisant le Framework Bootstrap, la Programmation Orientée Objet
(POO) en PHP et un système d’authentification utilisant la Base de donnée.

NB : - La liste des étudiants, l’ajout, la modification, la suppression doivent être protégés par une authentification.

Faire un CRUD (Create Read Update Delete) sur la table étudiant.

Vous aimerez peut-être aussi