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