Skip to content
Extraits de code Groupes Projets
Valider 98f52455 rédigé par vbochet's avatar vbochet Validation de Romain 'Table' DROUIN
Parcourir les fichiers

Ajout de fichiers et modification de la classe Jeu pour implémenter le...

Ajout de fichiers et modification de la classe Jeu pour implémenter le formulaire de demande d'ajout de jeu. Mise à jour de la page d'accueil.
parent c32bad15
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
...@@ -6,9 +6,42 @@ class JeuController extends Controller { ...@@ -6,9 +6,42 @@ class JeuController extends Controller {
$this->view->jeu = Jeu::getFromSlug($slug); $this->view->jeu = Jeu::getFromSlug($slug);
$this->view->display(); $this->view->display();
} }
public function displayListe() { public function displayListe() {
$this->view->liste = Jeu::getList(); $this->view->liste = Jeu::getList();
$this->view->display(); $this->view->display();
} }
public function displayFormAdd() {
$this->view->display();
}
public function addRequest() {
if(!isset($_POST['nom']) || !isset($_POST['description'])) { // si l'une des données manque, erreur
//appeler une fonction d'erreur
echo "<h1>Erreur : variables absentes</h1>";
die();
}
$data = $_POST;
$data['slug_jeu'] = self::slugify($_POST['nom']);
$result = Jeu::checkExists($data['slug_jeu']); // vérifie si le jeu n'est pas encore dans la BDD
if($result == 0) { // connexion valide
Jeu::addRequest($data['nom'], $data['description'], $data['slug_jeu'], 0);// on ajoute le jeu à la BDD avec
header('Location:requestvalid'); // on redirige vers la page OK
}
else {
session_start(); // on démarre une session pour avoir accès aux variables superglobales de session
$_SESSION["addRequestErrCode"] = $result; // on stocke le code d'erreur
header('Location:../addjeu'); // on redirige vers la page de formulaire (il faut faire un retour dans le dossier parent pour que ça fonctionne)
}
//$this->view->display();
}
public function displayRequestValid() { // la fonction d'affichage de réussite
$this->view->display(); // on affiche la page avec le message de réussite
}
} }
...@@ -28,6 +28,21 @@ class Router { // classe PHP permettant l'analyse de l'URL des requêtes ...@@ -28,6 +28,21 @@ class Router { // classe PHP permettant l'analyse de l'URL des requêtes
$result["action"] = "displayListe"; // on veut afficher la liste des jeux, donc on donne l'action "displayListe" $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"] // il n'y a pas de paramètres attendus, on n'affecte pas $result["params"]
} }
else if($parts[0] == "addjeu" && count($parts) == 1) { // on veut afficher le formulaire d'ajout(url/addjeu)
$result["controller"] = "Jeu";
$result["action"] = "displayFormAdd"; // on veut afficher le formulaire
// il n'y a pas de paramètres attendus, on n'affecte pas $result["params"]
}
else if($parts[0] == "addjeu" && count($parts) == 2 && $parts[1] == "addrequest") { // on veut enregistrer la demande d'ajout (addjeu/addrequest)
$result["controller"] = "Jeu"; // le contrôleur à instancier sera "JeuController", on met donc "Jeu" dans la variable de résultat
$result["action"] = "addRequest"; // on veut ajouter le jeu à la BDD, donc on donne l'action "addRequest"
// il n'y a pas de paramètres attendus, on n'affecte pas $result["params"]
}
else if($parts[0] == "addjeu" && count($parts) == 2 && $parts[1] == "requestvalid") { // l'enregistrement de la demande a été effectué, on affiche un message de confirmation (addjeu/requestvalid)
$result["controller"] = "Jeu";
$result["action"] = "displayRequestValid";
// il n'y a pas de paramètres attendus, on n'affecte pas $result["params"]
}
/*** consultation des profils ***/ /*** consultation des profils ***/
else if($parts[0] == "profil" && count($parts) == 2) { // consultation d'un profil : 2 morceaux (profil/pseudoDeLaPersonne) else if($parts[0] == "profil" && count($parts) == 2) { // consultation d'un profil : 2 morceaux (profil/pseudoDeLaPersonne)
......
...@@ -5,7 +5,7 @@ class Jeu extends Model { ...@@ -5,7 +5,7 @@ class Jeu extends Model {
public static function getFromSlug($slug_jeu) { public static function getFromSlug($slug_jeu) {
$db = Database::getInstance(); $db = Database::getInstance();
$sql = "SELECT * FROM jeux WHERE slug = :slug"; $sql = "SELECT * FROM R_jeu WHERE slug = :slug";
$stmt = $db->prepare($sql); $stmt = $db->prepare($sql);
$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->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_jeu)); $stmt->execute(array(":slug" => $slug_jeu));
...@@ -14,13 +14,38 @@ class Jeu extends Model { ...@@ -14,13 +14,38 @@ class Jeu extends Model {
public static function getList() { public static function getList() {
$db = Database::getInstance(); $db = Database::getInstance();
$sql = "SELECT * FROM jeux"; $sql = "SELECT * FROM R_jeu";
$stmt = $db->query($sql); $stmt = $db->query($sql);
$stmt->setFetchMode(PDO::FETCH_CLASS, "Jeu"); $stmt->setFetchMode(PDO::FETCH_CLASS, "Jeu");
return $stmt->fetchAll(); return $stmt->fetchAll();
} }
public static function checkExists($slug_jeu) { // méthode permettant de vérifier si un jeu existe dans la BDD
$db = Database::getInstance(); // on récupère la connexion à la BDD
$sql = "SELECT * FROM R_jeu WHERE slug = :slug";
$req = $db->prepare($sql); // on prépare la requête
$req->execute(array(":slug" => $slug_jeu)); // on remplace les variables dans la requête
if($result = $req->fetch()) { // on récupère l'enregistrement, s'il existe
return 1;
}
return 0; // on aurait pu mettre deux return (un dans le if et un ici), mais bon...
}
public static function addRequest($nom_jeu, $description, $slug_jeu, $est_valide) {
$db = Database::getInstance();
$sql = "INSERT INTO R_jeu (nom, description, slug, est_valide) VALUES (:nom, :description, :slug, :est_valide);";
$stmt = $db->prepare($sql);
if($stmt->execute(array(":nom" => $nom_jeu, ":description" => $description, ":slug" => $slug_jeu, ":est_valide" => $est_valide))) {
//ok
}
else {
echo "Arise, ça marche pas..."; die();
}
}
} }
......
...@@ -17,6 +17,7 @@ ...@@ -17,6 +17,7 @@
<li><a href="jeu/<?php echo $jeu->slug;?>"><?php echo $jeu->nom;?></a></li> <li><a href="jeu/<?php echo $jeu->slug;?>"><?php echo $jeu->nom;?></a></li>
<?php endforeach;?> <?php endforeach;?>
</ul> </ul>
<h2 style="margin-bottom:-2px;"><a href="addjeu">Demander à ajouter un jeu</a></h2>
<h2 style="margin-bottom:-4px;">Liste de profils</h2> <h2 style="margin-bottom:-4px;">Liste de profils</h2>
<em>(modifs à venir lorsqu'on aura défini la BDD)</em> <em>(modifs à venir lorsqu'on aura défini la BDD)</em>
......
<?php session_start(); ?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<title>Formulaire de demande d'ajout de jeu</title>
</head>
<body>
<header>
<h1>Formulaire de demande d'ajout de jeu</h1>
</header>
<?php if(isset($_SESSION['addRequestErrCode'])) {
echo '<h3 style="color:red;">Ce jeu est déjà dans la base !</h3>';
unset($_SESSION['addRequestErrCode']);
} ?>
<form method="post" action="addjeu/addrequest">
<label for="nom">Nom du jeu :</label> <input type="text" name="nom" required="" id="nom" /> <br/>
<label for="description">Description :</label> <textarea name="description" id="description" ></textarea> <br/>
<input type="submit" />
</form>
<footer>
<p>Pied de page...</p>
</footer>
</body>
</html>
<?php session_start(); ?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<title>Demande enregistrée</title>
</head>
<body>
<header>
<h1 style="color:green;">Votre demande a été enregistrée !</h1>
</header>
<p>Elle sera traitée par les administrateurs dès que possible. :)</p>
<footer>
<p>Le pied de page</p>
</footer>
</body>
</html>
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter