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;