From 354d14854cdb9f2978f1c5f09451ce2fdae66902 Mon Sep 17 00:00:00 2001
From: vbochet <vbochet@gmail.com>
Date: Fri, 1 Apr 2016 22:49:40 +0200
Subject: [PATCH] Modifications et ajout de fichiers pour ajouter une page
 permettant de lister les jeux du site.

---
 .gitignore                       |  1 +
 app/controller/JeuController.php | 16 ++++++++++------
 app/kernel/Router.php            |  7 ++++++-
 app/model/Jeu.php                |  2 +-
 app/model/Profil.php             |  2 +-
 app/view/index/display.html      |  4 ++--
 app/view/jeu/display.html        |  7 +++----
 app/view/jeu/displayListe.html   | 23 +++++++++++++++++++++++
 8 files changed, 47 insertions(+), 15 deletions(-)
 create mode 100644 .gitignore
 create mode 100644 app/view/jeu/displayListe.html

diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..723ef36
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+.idea
\ No newline at end of file
diff --git a/app/controller/JeuController.php b/app/controller/JeuController.php
index e6d070a..52d8547 100644
--- a/app/controller/JeuController.php
+++ b/app/controller/JeuController.php
@@ -1,10 +1,14 @@
 <?php
 
 class JeuController extends Controller {
-   public function display() {
-      $slug = $this->route["params"]["slug"];
-      $this->view->jeu = Jeu::getFromSlug($slug);
-      $this->view->display();
-   }
-
+	public function display() {
+		$slug = $this->route["params"]["slug"];
+		$this->view->jeu = Jeu::getFromSlug($slug);
+		$this->view->display();
+	}
+	
+	public function displayListe() {
+		$this->view->liste = Jeu::getList();
+		$this->view->display();
+	}
 }
diff --git a/app/kernel/Router.php b/app/kernel/Router.php
index a2b339b..7918cd3 100644
--- a/app/kernel/Router.php
+++ b/app/kernel/Router.php
@@ -16,11 +16,16 @@ class Router { // classe PHP permettant l'analyse de l'URL des requêtes
 		}
 		else { // sinon, on a des infos sur la page demandée
 			$parts = explode("/", $query); // on sépare la requête selon les /, et on regarde ce qu'on connait comme ordres dedans
-			if($parts[0] == "jeu" && count($parts) == 2) { // on veut consulter la fiche d'un jeu (je sais pas si y'a ça de prévu, mais ça servira d'exemple)
+			if($parts[0] == "jeu" && count($parts) == 2) { // on veut consulter la fiche d'un jeu
 				$result["controller"] = "Jeu"; // le contrôleur à instancier sera "JeuController", on met donc "Jeu" dans la variable de résultat
 				$result["action"] = "display"; // on veut afficher les informations d'un jeu, donc on donne l'action "display"
 				$result["params"]["slug"] = $parts[1]; //on a des paramètres dans l'URL (normalement le nom/id du jeu), on le stocke aussi
 			}
+			else if($parts[0] == "listejeux") { // on veut consulter la liste des jeux
+				$result["controller"] = "Jeu"; // le contrôleur à instancier sera "JeuController", on met donc "Jeu" dans la variable de résultat
+				$result["action"] = "displayListe"; // on veut afficher la liste des jeux, donc on donne l'action "displayListe"
+				// il n'y a pas de paramètres attendus, on n'affecte pas $result["params"]
+			}
 			else if($parts[0] == "profil" && count($parts) == 2) { // autre possibilité : on veut consulter un profil (le premier bout de la requête est "profil", et on a au moins un paramètre derrière)
 				$result["controller"] = "Profil"; // le contrôleur à instancier sera "ProfilController", on met donc "Profil" dans la variable de résultat
 				$result["action"] = "display"; // on veut afficher le profil de quelqu'un, donc on donne l'action "display"
diff --git a/app/model/Jeu.php b/app/model/Jeu.php
index df1905a..614dd37 100644
--- a/app/model/Jeu.php
+++ b/app/model/Jeu.php
@@ -7,7 +7,7 @@ class Jeu extends Model {
       $db = Database::getInstance();
       $sql = "SELECT * FROM jeux WHERE slug = :slug";
       $stmt = $db->prepare($sql);
-      $stmt->setFetchMode(PDO::FETCH_CLASS, "Jeu");
+      $stmt->setFetchMode(PDO::FETCH_CLASS, "Jeu"); // règle le type dans lequel on doit mettre les données (PDO va chercher les attributs de la classe de même nom que ses colonnes de BDD et mettre dedans les valeurs correspondantes)
       $stmt->execute(array(":slug" => $slug));
       return $stmt->fetch();
    }
diff --git a/app/model/Profil.php b/app/model/Profil.php
index 5e854c7..0efe32f 100644
--- a/app/model/Profil.php
+++ b/app/model/Profil.php
@@ -7,7 +7,7 @@ class Profil extends Model { // classe de modèle pour l'affichage de profils
 		$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->setFetchMode(PDO::FETCH_CLASS, "Profil");  // règle le type dans lequel on doit mettre les données (PDO va chercher les attributs de la classe de même nom que ses colonnes de BDD et mettre dedans les valeurs correspondantes)
 		$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
 	}
diff --git a/app/view/index/display.html b/app/view/index/display.html
index 41b8eed..a835a65 100644
--- a/app/view/index/display.html
+++ b/app/view/index/display.html
@@ -11,10 +11,10 @@
    </header>
    <h2>On peut faire plein de trucs avec ça !</h2>
    
-   <h2>Liste de jeux</h2>
+   <h2><a href="listejeux">Liste de jeux</a></h2>
    <ul>
       <?php foreach($this->list as $jeu) : ?>
-      <li><a href="jeu/<?php echo $jeu->slug;?>"><?php echo $jeu->description;?></a></li>
+      <li><a href="jeu/<?php echo $jeu->slug;?>"><?php echo $jeu->nom;?></a></li>
       <?php endforeach;?>
    </ul>
    
diff --git a/app/view/jeu/display.html b/app/view/jeu/display.html
index f3d467e..4fdaaac 100644
--- a/app/view/jeu/display.html
+++ b/app/view/jeu/display.html
@@ -2,15 +2,14 @@
 <html>
 <head>
    <meta charset="utf-8"/>
-   <title>Affichage d'un jeu</title>
+   <title>Fiche d'un jeu</title>
    <base href="http://localhost/projet-web-2016/www/"/>
 </head>
 <body>
    <header>
-      <h1>Exemple d'affichage d'un jeu</h1>
+      <h1>Fiche du jeu <?php echo $this->jeu->nom; ?></h1>
    </header>
-   <h2><?php echo $this->jeu->nom; ?></h2>
-   <h3><?php echo $this->jeu->description; ?></h3>
+   <p><em>Description : </em><?php echo $this->jeu->description; ?></p>
    <footer>
       <p>Pied de page...</p>
    </footer>
diff --git a/app/view/jeu/displayListe.html b/app/view/jeu/displayListe.html
new file mode 100644
index 0000000..7babd34
--- /dev/null
+++ b/app/view/jeu/displayListe.html
@@ -0,0 +1,23 @@
+<!DOCTYPE html>
+<html>
+<head>
+   <meta charset="utf-8"/>
+   <title>Liste des jeux</title>
+   <base href="http://localhost/projet-web-2016/www/"/>
+</head>
+<body>
+   <header>
+      <h1>La liste de nos jeux</h1>
+   </header>
+   <ul>
+      <?php foreach($this->liste as $jeu) : ?>
+      <li><a href="jeu/<?php echo $jeu->slug;?>"><?php echo $jeu->nom;?></a></li>
+      <?php endforeach;?>
+   </ul>
+   <footer>
+      <p>Pied de page...</p>
+   </footer>
+</body>
+
+
+</html>
-- 
GitLab