Session BRE04 Help

Exercice : Pratique PDO

Étape 0 : Repository et base de données

Créez un repository GitHub public avec un README et appelez-le bre04-php-j6. Clonez-le dans le dossier sites/php de votre IDE, puis placez-vous dans le dossier du projet.

Créez une base de données dans PHPMyAdmin (utf8_general_ci) appellée prenomnom_phpj6.

Ensuite, importez-y le fichier address.sql, une fois l'import fini, importez le fichier users.sql.

Étape 1 : Connexion

Créez un fichier connexion.php, il va contenir la connexion à votre base de données, les informations de connexion à votre base de données liées à l'IDE sont sur la page d'accueil du PHPMyAdmin.

Pour tester cette connexion, faites un run du fichier connexion.php, et faites un var_dump de la variable qui contient la connexion (généralement, elle s'appelle $db).

//connexion.php $host = "db.3wa.io"; $port = "3306"; $dbname = "prenomnom_phpj6"; $connexionString = "mysql:host=$host;port=$port;dbname=$dbname;charset=utf8"; $user = "prenomnom"; $password = "password"; $db = new PDO( $connexionString, $user, $password ); /*echo "<pre>"; var_dump($db); echo "</pre>";*/

Étape 2 : Récupérer tous les utilisateurs

Créez un fichier get_all_users.php: il va contenir une requête qui devra récupérer tous les utilisateurs de la base de données et les afficher avec un var_dump.

Pour tester, faites un run du fichier get_all_users.php.

//get_all_users.php require "connexion.php"; $query = $db->prepare('SELECT * FROM users'); $query->execute(); $users = $query->fetchAll(PDO::FETCH_ASSOC); echo "<pre>"; var_dump($users); echo "</pre>";

Étape 3 : récupérer un utilisateur

Créez un fichier get_single_user.php: il va contenir une requête qui doit vous permettre de récupérer un utilisateur dont l'id sera passé à votre page dans les paramètres de l'URL.

Pour tester, faites un run de votre fichier get_single_user.php et ajoutez un id d'utilisateur à l'URL.

get_single_user.php?id=3 devra afficher Jules César, get_single_user.php?id=2 devra afficher Sarah Toustra, etc etc.

// get_single_user.php require "connexion.php"; $query = $db->prepare('SELECT * FROM users WHERE id = :id'); $parameters = [ 'id' => $_GET['id'] ]; $query->execute($parameters); $user = $query->fetch(PDO::FETCH_ASSOC); echo "<pre>"; var_dump($user); echo "</pre>";

Étape 4 : récupérer un utilisateur et son adresse

Créez un fichier get_user_with_address.php: Il va contenir une requête qui doit vous permettre de récupérer un utilisateur dont l'id sera passé en paramètre de l'URL ainsi que les informations de son adresse.

Pour tester, faites un run de votre fichier get_user_with_address.php et ajoutez un id d'utilisateur à l'URL.

get_user_with_address.php?id=3 devra afficher Jules César et son adresse, get_user_with_address.php?id=2 devra afficher Sarah Toustra et son adresse.

// get_user_with_address.php require "connexion.php"; $query = $db->prepare('SELECT users.*, address.street, address.zipcode, address.city FROM users JOIN address ON users.address = address.id WHERE users.id = :id'); $parameters = [ 'id' => $_GET['id'] ]; $query->execute($parameters); $user = $query->fetch(PDO::FETCH_ASSOC); echo "<pre>"; var_dump($user); echo "</pre>";

Étape 5 : récupérer les utilisateurs et leurs adresses

Créez un fichier get_users_with_addresses.php: Il va contenir une requête qui doit vous permettre de récupérer les utilisateurs ainsi que les informations de leurs adresses.

Pour tester, faites un run de votre fichier get_users_with_addresses.php.

// get_users_with_addresses.php require "connexion.php"; $query = $db->prepare('SELECT users.*, address.street, address.zipcode, address.city FROM users JOIN address ON users.address = address.id'); $query->execute(); $users = $query->fetchAll(PDO::FETCH_ASSOC); echo "<pre>"; var_dump($users); echo "</pre>";

Étape 6 : créer une adresse

Créez deux fichiers : create-address.html et create-address.php.

Dans create-address.html, créez un formulaire dont l'action est create-address.php et la méthode est post. Le formulaire doit contenir 3 champs : street, city et zipcode ainsi qu'un bouton de soumission du formulaire.

Dans create-address.php vous allez récupérer les informations du formulaire, puis les stocker dans des variables. Vous allez ensuite effectuer une requête qui permet de créer l'adresse dans la base de données.

Pour tester, faits un run de votre fichier create-address.html, soumettez un formulaire puis vérifiez dans PHPMyAdmin que l'adresse est bien créée.

// create-address.html <!doctype html> <html> <head> <meta charset="utf-8"> <title>Create address</title> </head> <body> <form action="create-address.php" method="post"> <fieldset> <label for="street"> Rue </label> <input type="text" name="street" id="street" /> </fieldset> <fieldset> <label for="zipcode"> Code postal </label> <input type="text" name="zipcode" id="zipcode" /> </fieldset> <fieldset> <label for="city"> Ville </label> <input type="text" name="city" id="city" /> </fieldset> <fieldset> <button type="submit">Envoyer</button> </fieldset> </form> </body> </html> // create-address.php require "connexion.php"; $street = $_POST['street']; $city = $_POST['city']; $zipcode = $_POST['zipcode']; $query = $db->prepare("INSERT INTO address (id, street, zipcode, city) VALUES (NULL, :street, :zipcode, :city)"); $parameters = [ 'street' => $street, 'zipcode' => $zipcode, 'city' => $city ]; $query->execute($parameters);

Étape 7 : modifier une adresse

Créez deux fichiers : edit-address.html et edit-address.php.

Dans edit-address.html, créez un formulaire dont l'action est edit-address.php et la méthode est post. Le formulaire doit contenir 4 champs : id, street, city et zipcode ainsi qu'un bouton de soumission du formulaire.

Dans edit-address.php vous allez récupérez les informations du formulaire, puis les stocker dans des variables. Vous allez ensuite effectuer une requête qui permet de modifier l'adresse dans la base de données.

Pour tester, faits un run de votre fichier edit-address.html, soumettez un formulaire puis vérifiez dans PHPMyAdmin que l'adresse est bien modifiée.

// edit-address.html <!doctype html> <html> <head> <meta charset="utf-8"> <title>Edit address</title> </head> <body> <form action="edit-address.php" method="post"> <fieldset> <label for="id"> Id </label> <input type="text" name="id" id="id" /> </fieldset> <fieldset> <label for="street"> Rue </label> <input type="text" name="street" id="street" /> </fieldset> <fieldset> <label for="zipcode"> Code postal </label> <input type="text" name="zipcode" id="zipcode" /> </fieldset> <fieldset> <label for="city"> Ville </label> <input type="text" name="city" id="city" /> </fieldset> <fieldset> <button type="submit">Envoyer</button> </fieldset> </form> </body> </html> // edit-address.php require "connexion.php"; $id = $_POST['id']; $street = $_POST['street']; $city = $_POST['city']; $zipcode = $_POST['zipcode']; $query = $db->prepare("UPDATE address SET street = :street, city = :city, zipcode = :zipcode WHERE id = :id "); $parameters = [ 'id' => $id, 'street' => $street, 'zipcode' => $zipcode, 'city' => $city ]; $query->execute($parameters);

Étape 8 : supprimer une adresse

Créez deux fichiers : delete-address.html et delete-address.php.

Dans delete-address.html, créez un formulaire dont l'action est delete-address.php et la méthode est post. Le formulaire doit contenir 1 champ : id ainsi qu'un bouton de soumission du formulaire.

Dans delete-address.php vous allez récupérez l'information du formulaire, puis la stocker dans une variable. Vous allez ensuite effectuer une requête qui permet de supprimer l'adresse dans la base de données.

Pour tester, faits un run de votre fichier delete-address.html, soumettez un formulaire puis vérifiez dans PHPMyAdmin que l'adresse est bien supprimée.

// delete-address.html <!doctype html> <html> <head> <meta charset="utf-8"> <title>Delete address</title> </head> <body> <form action="delete-address.php" method="post"> <fieldset> <label for="id"> Id </label> <input type="text" name="id" id="id" /> </fieldset> <fieldset> <button type="submit">Envoyer</button> </fieldset> </form> </body> </html> // delete-address.php require "connexion.php"; $id = $_POST['id']; $query = $db->prepare("DELETE FROM address WHERE id = :id"); $parameters = [ 'id' => $id ]; $query->execute($parameters);
11 June 2025