From 2088770de965c5227f0b8151f258871d87330d5b Mon Sep 17 00:00:00 2001 From: vbochet <vbochet@gmail.com> Date: Thu, 31 Mar 2016 20:09:55 +0200 Subject: [PATCH] =?UTF-8?q?Cr=C3=A9ation=20de=20fichiers=20et=20r=C3=A9per?= =?UTF-8?q?toires=20pour=20la=20page=20d'affichage=20de=20profils=20(page?= =?UTF-8?q?=20d'exemple=20MVC)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controller/ProfilController.php | 9 +++++++++ app/model/Profil.php | 25 +++++++++++++++++++++++++ app/view/profil/display.html | 22 ++++++++++++++++++++++ 3 files changed, 56 insertions(+) create mode 100644 app/controller/ProfilController.php create mode 100644 app/model/Profil.php create mode 100644 app/view/profil/display.html diff --git a/app/controller/ProfilController.php b/app/controller/ProfilController.php new file mode 100644 index 0000000..96d3953 --- /dev/null +++ b/app/controller/ProfilController.php @@ -0,0 +1,9 @@ +<?php + +class ProfilController extends Controller { // classe de contrôleur pour l'affichage des profils + public function display() { + $slug = $this->route["params"]["slug"]; // on récupère le "slug", en gros tout le reste de l'URL qui n'a pas encore servi + $this->view->profil = Profil::getFromSlug($slug); // on utilise le modèle pour aller chercher en BDD le profil qui nous intéresse + $this->view->display(); // on affiche ce profil + } +} diff --git a/app/model/Profil.php b/app/model/Profil.php new file mode 100644 index 0000000..5e854c7 --- /dev/null +++ b/app/model/Profil.php @@ -0,0 +1,25 @@ +<?php + +class Profil extends Model { // classe de modèle pour l'affichage de profils + public $pseudo, $slug; // on définit les attributs de la classe + + public static function getFromSlug($slug) { // méthode permettant de récupérer les informations relatives à un profil donné de la BDD + $db = Database::getInstance(); // on récupère la connexion à la BDD + $sql = "SELECT * FROM profils WHERE slug = :slug"; // on définit la requête qu'on enverra + $req = $db->prepare($sql); // on prépare la requête (c'est là que la mémthode __call() est utile dans la classe Database d'ailleurs) + $req->setFetchMode(PDO::FETCH_CLASS, "Profil"); // règle le mode de parcours des résultats + $req->execute(array(":slug" => $slug)); // on remplace le "::slug" par sa valeur dans la requête + return $req->fetch(); // on retourne le premier (et normalement unique) résultat en BDD + } + + public static function getList() { // méthode permettant de récupérer la liste des profils de la BDD + $db = Database::getInstance(); // idem à au-dessus + $sql = "SELECT * FROM profils"; + $req = $db->query($sql); + $req->setFetchMode(PDO::FETCH_CLASS, "Profil"); + return $req->fetchAll(); + } +} + + + diff --git a/app/view/profil/display.html b/app/view/profil/display.html new file mode 100644 index 0000000..846dba8 --- /dev/null +++ b/app/view/profil/display.html @@ -0,0 +1,22 @@ +<!DOCTYPE html> +<html> +<head> + <meta charset="utf-8"/> + <title>Exemple de profil</title> + <base href="http://localhost/projet-web-2016/www/"/> +</head> +<body> + <header> + <h1>Affichage d'un profil</h1> + </header> + <h2>Voici le profil de quelqu'un</h2> + <h3>Il s'agit du profil de <?php echo $this->profil->pseudo; ?></h3> + <p>Et on dit "Bonjour <?php echo $this->profil->pseudo; ?> ! :o)</p> + <p>Il a été appelé avec le slug : <?php echo $this->profil->slug; ?></p> + <footer> + <p>Le pied de page</p> + </footer> +</body> + + +</html> -- GitLab