Exercice
Indiquer, ligne par ligne, si l'instruction PHP fait partie du modèle, de la vue ou du contrôleur.
<?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()); } } else if (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; if (array_key_exists("css", $_GET) && $_GET["css"] == "bootstrap") echo '<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta.2/css/bootstrap.min.css" integrity="sha384-PsH8R72JQ3SOdhVi3uxftmaW6Vc51MKb0q5P2rRUpPvrszuE4W1povHYgTpBfshb" crossorigin="anonymous"><link rel="stylesheet" href="./css/bootstrap.css" type="text/css"/><style>label{display: block;width: 75px;float: left;}.card{margin-bottom: 2em;}</style>'; else echo '<link rel="stylesheet" href="../../css/alsa.css" type="text/css"/>'; 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; } if (array_key_exists("css", $_GET) && $_GET["css"] == "bootstrap") { echo '<script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script>'; echo '<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.3/umd/popper.min.js" integrity="sha384-vFJXuSJphROIrBnz7yo7oB41mKfc8JzQZiCq4NCceLEaO4IHwicKwpJf9c9IpFgh" crossorigin="anonymous"></script>'; echo '<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta.2/js/bootstrap.min.js" integrity="sha384-alpBpkh1PFOepccYVYDB4do5UnbKysX5WZXm3XxPqe5iKTfUKjNkCk9SaVuEZflJ" crossorigin="anonymous"></script>'; } echo "</article></body></html>"; $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); } ?>