Premiers pas
Afficher la liste des auteurs.
Gestion de livres
Reproduire la page suivante avec :
- Affichage depuis la liste des livres
- Ajout fonctionnel
- Suppression fonctionnelle
- Edition fonctionnelle (on réutilisera le formulaire d'ajout en changeant le libellé du bouton de validation)

db_config.php
<?php $db_config = array(); $db_config['SGBD'] = 'mysql'; $db_config['HOST'] = '127.0.0.1'; $db_config['DB_NAME'] = 'Vente'; $db_config['USER'] = 'virgile'; $db_config['PASSWORD'] = 'toto'; $db_config['ENCODING'] = "utf8"; $db_config['OPTIONS'] = array( // Les erreurs provoqueront des exceptions PDO PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, ); ?>
connect.php
<?php require_once 'db_config.php'; try { $db_server = new PDO($db_config['SGBD'] . ':host=' . $db_config['HOST'] . ';dbname=' . $db_config['DB_NAME'] . ';charset=' . $db_config['ENCODING'], $db_config['USER'], $db_config['PASSWORD']); } catch (PDOException $e) { die("Connexion impossible au serveur MySQL :" . $e->getMessage()); } ?>
manageLivre.php
<?php require_once 'connect.php'; error_reporting(E_ALL); // Afficher toutes les erreurs, utilise pour debugger $isbn = ''; $titre = ''; $type = ''; $annee = ''; $prix = ''; // Test des donnees du formulaires if (isset($_POST['ISBN'])) { $isbn = getPost('ISBN'); // Suppression if (isset($_POST['Supprimer']) && '' != $isbn) { try { // Suppresion de la jointure avec les auteurs $query = $db_server->prepare('DELETE FROM AuteurLivre WHERE idLivre=?'); $query->execute(array($isbn)); // Suppression du livre $query = $db_server->prepare('DELETE FROM Livre WHERE isbn=?'); $query->execute(array($isbn)); $isbn = ''; } catch (PDOException $e) { die('Erreur base :'.$e->getMessage()); } } elseif (isset($_POST['Editer']) && '' != $isbn) { list($isbn, $titre, $type, $annee, $prix) = getLivre($db_server, $isbn); } else { if ( isset($_POST['Titre']) && isset($_POST['Type']) && isset($_POST['Annee']) && isset($_POST['Prix'])) { $titre = getPost('Titre'); $type = getPost('Type'); $annee = getPost('Annee'); $prix = getPost('Prix'); // Ajout if (isset($_POST['Ajouter']) && '' != $isbn) { $query = $db_server->prepare('INSERT INTO Livre (`ISBN`, `Titre`, `Type`, `Annee`, `Prix`) VALUES (?, ?, ?, ?, ?)'); try { $query->execute(array($isbn, $titre, $type, $annee, $prix)); } catch (PDOException $e) { die('Erreur base :'.$e->getMessage()); } $isbn = ''; $titre = ''; $type = ''; $annee = ''; $prix = ''; } if (isset($_POST['Enregistrer']) && '' != $isbn) { $query = $db_server->prepare('UPDATE Livre SET `Titre`=?, `Type`=?, `Annee`= ?, `Prix`=? WHERE isbn=?'); try { $query->execute(array($titre, $type, $annee, $prix, $isbn)); } catch (PDOException $e) { die('Erreur base :'.$e->getMessage()); } $isbn = ''; $titre = ''; $type = ''; $annee = ''; $prix = ''; } } } } // Formulaire echo <<<_END <!DOCTYPE html> <html lang="fr"> <head> <meta charset="utf-8" /> <title>Exercice</title> _END; echo <<<_END </head> <body class="container"><header id="logo" class="jumbotron"> <h1>Gestion des livres</h1></header> <article> <section class="card"> <header><h2>Saisie</h2></header> <form action="manageLivre.php" method="post"> _END; echo '<label for="isbn">ISBN</label> <input type="text" id="isbn" name="ISBN" value="'.$isbn.'"/><br>'; echo '<label for="titre">Titre</label> <input type="text" id="titre" name="Titre" value="'.$titre.'"/><br>'; echo '<label for="type">Type</label> <input type="text" id="type" name="Type" value="'.$type.'"/><br>'; echo '<label for="annee">Annee</label> <input type="text" id="annee" name="Annee" value="'.$annee.'"/><br>'; echo '<label for="prix">Prix</label> <input type="text" id="prix" name="Prix" value="'.$prix.'"/><br>'; if (isset($_POST['Editer']) && '' != $isbn) { echo '<input type="submit" value="Enregistrer" name="Enregistrer"/>'; } else { echo '<input type="submit" value="Ajouter" name = "Ajouter">'; } echo <<<_END </form> </section> </article> <article> <h2>Ouvrages</h2> _END; $query = 'SELECT * FROM Livre ORDER BY Annee, isbn'; $results = $db_server->query($query); foreach ($results as $row) { list($isbn, $titre, $type, $annee, $prix) = donneesLivre($row); // Resultats echo '<section class="card"><header class="card-header"><h2>'.$titre.'</h2></header><div class="card-body">'; echo $type.' de '.$annee.'<br>'; echo 'ISBN : '.$isbn.' / Prix :'.$prix.' €<br>'; echo <<<_END <form action="manageLivre.php" method="post"> <input type="hidden" name="ISBN" value="$isbn"/> <input type="submit" name="Supprimer" value="Supprimer"/> <input type="submit" name="Editer" value="Editer"/> </form> </div></section> _END; } $db_server = null; // Fonction de securite function getPost($var) { return $_POST[$var]; } function getLivre($db_server, $isbn) { try { /** @var PDOStatement $query */ $query = $db_server->prepare('select `ISBN`, `Titre`, `Type`, `Annee`, `Prix` from Livre where isbn=?'); /** @var bool $result */ $result = $query->execute(array($isbn)); if ($query->rowCount()) { return donneesLivre($query->fetch()); } return null; } catch (PDOException $e) { die('Erreur base :'.$e->getMessage()); } } function donneesLivre($row) { $isbn = stripslashes($row['ISBN']); $titre = stripslashes($row['Titre']); $type = stripslashes($row['Type']); $annee = stripslashes($row['Annee']); $prix = stripslashes($row['Prix']); return array($isbn, $titre, $type, $annee, $prix); }
Création d'un utilisateur pour la BDD
CREATE USER 'lpars'@'localhost' IEDNTIFIED BY 'pouetpouet'; -- mot de passe à adapter GRANT ALL PRIVILEGES ON ma_bdd.* TO 'lpars'@'localhost' WITH GRANT OPTION; -- BDD à adapter FLUSH PRIVILEGES;