diff --git a/app/controller/PartieController.php b/app/controller/PartieController.php index 63d65ea85e510a8cc9001992a68aa91982b1bb37..a84ccb33ecc05d0a0551f047c6c3195c71f9d624 100644 --- a/app/controller/PartieController.php +++ b/app/controller/PartieController.php @@ -8,54 +8,128 @@ */ class PartieController extends Controller { - public function displayForm(){ + public function displayStep0(){ $this->view->liste = Jeu::getList(); + $this->view->display(); + } + + public function displayStep1(){ + session_start(); + if(!isset($_SESSION['jeu_select'])) + header("Location:../add_partie"); + + $this->view->jeuactuel = $_SESSION['jeu_select']; $this->view->listej = Profil::getList(); $this->view->display(); } - + + public function displayStep2(){ + session_start(); + if(!isset($_SESSION['jeu_select'])) + header("Location:../add_partie"); + if(!isset($_SESSION['joueurs_select'])) + header("Location:../add_partie/step1"); + + + $this->view->jeuactuel = $_SESSION['jeu_select']; + $this->view->listejactuel = $_SESSION['joueurs_select']; + $this->view->display(); + } + public function displayValid(){ $this->view->display(); } - public function verify(){ + public function verifyStep0(){ - if(!isset($_POST['jeu']) || !isset($_POST['joueurs']) || !isset($_POST['scores'])) { + if(!isset($_POST['jeu'])) { //appeler une fonction d'erreur echo "<h1>Erreur : variables absentes</h1>"; die(); } - $data = $_POST; + $jeu = $_POST['jeu']; - $scores = explode(";", $data["scores"]); - $ns = count($scores); - $nj = count($data["joueurs"]); - if ($ns != $nj){ - //appeler une fonction d'erreur - echo "<h1>Erreur : scores et joueurs incohérents</h1>"; + if(!Jeu::checkExistsNom($jeu)) { + echo "<h1>Erreur : le jeu entré est introuvable dans la BD.</h1>"; + die(); + } + + $jeu = Jeu::getFromNom($jeu); + session_start(); + $_SESSION['jeu_select'] = $jeu; + header('Location:step1'); + } + + public function verifyStep1(){ + session_start(); + if(!isset($_SESSION['jeu_select'])) + header("Location:../add_partie"); + $joueurs = array(); + if(isset($_POST['joueur_check'])) { + foreach($_POST['joueur_check'] as $j){ + if (!in_array($_POST["joueur"."$j"], $joueurs)) + array_push($joueurs, $_POST["joueur"."$j"]); + else{ + echo "<h1>Erreur : un joueur a été entré plusieurs fois.</h1>"; + die(); + } + } + } + else{ + echo "<h1>Erreur : aucune checkbox coché.</h1>"; die(); } + $nj = count($joueurs); + $joueurs_objet = array(); for ($j=0;$j<$nj;$j++){ - if(!Profil::checkExists($data['joueurs'][$j])){ - echo "<h1>Erreur : un des joueurs est entré est introuvable dans la BD.</h1>"; + if(Profil::checkExists($joueurs[$j])){ + array_push($joueurs_objet, Profil::getFromSlug($joueurs[$j])); + } + else{ + echo "<h1>Erreur : un des joueurs entré est introuvable dans la BD.</h1>"; die(); } } + $_SESSION['joueurs_select'] = $joueurs_objet; + header('Location:step2'); + } + public function verifyStep2(){ + session_start(); + if(!isset($_SESSION['jeu_select'])) + header("Location:../add_partie"); + if(!isset($_SESSION['joueurs_select'])) + header("Location:../add_partie/step1"); - if(!Jeu::checkExists($data['jeu'])){ - echo "<h1>Erreur : le jeu entré est introuvable dans la BD.</h1>"; + if(!isset($_POST['scores'])) { + //appeler une fonction d'erreur + echo "<h1>Erreur : variables absentes</h1>"; die(); } - - $pb = Partie::addPartie($data['joueurs'], $scores, $data['jeu']); - if(!$pb) + + $scores = $_POST["scores"]; + foreach ($scores as $s){ + if(!is_numeric($s)) { + echo "<h1>Erreur : les scores doivent être des nombres.</h1>"; + die(); + } + } + $jeu = $_SESSION['jeu_select']; + $joueurs = $_SESSION['joueurs_select']; + $ns = count($scores); + $nj = count($joueurs); + if ($ns != $nj){ + //appeler une fonction d'erreur + echo "<h1>Erreur : scores et joueurs incohérents</h1>"; + die(); + } + $pb = Partie::addPartie($joueurs, $scores, $jeu); + if(!$pb) { + unset($_SESSION['jeu_select']); + unset($_SESSION['joueurs_select']); header('Location:valid'); // Redirection vers la page OK + } switch ($pb) { - case 1: - echo "<h1>Erreur : Le jeu choisi n'existe pas.</h1>"; - die(); - break; case 2: echo "<h1>Erreur de connexion à la BD.</h1>"; die(); @@ -66,5 +140,4 @@ class PartieController extends Controller break; } } - } \ No newline at end of file diff --git a/app/kernel/Router.php b/app/kernel/Router.php index 7f8698becd816a8f390111802edb41746eb00bc8..a1496e2da3f906bdaae9f261580e4f01ddd9a4fc 100644 --- a/app/kernel/Router.php +++ b/app/kernel/Router.php @@ -1,116 +1,108 @@ <?php -class Router { // classe PHP permettant l'analyse de l'URL des requêtes - public static function analyze($query) { // méthode d'analyse de la requête - // on définit une variable, par défaut initialisée sur les paramètres de page d'erreur 404 (page non trouvée) - $result = array( - "controller" => "Error", // le nom du contrôleur à instancier - "action" => "error404", // le nom de l'action à effectuer, autrement dit de la méthode à appeler dans ce contrôleur - "params" => array() // les paramètres de la requête (dans un tableau), par défaut aucun - ); +class Router +{ // classe PHP permettant l'analyse de l'URL des requêtes + public static function analyze($query) + { // méthode d'analyse de la requête + // on définit une variable, par défaut initialisée sur les paramètres de page d'erreur 404 (page non trouvée) + $result = array( + "controller" => "Error", // le nom du contrôleur à instancier + "action" => "error404", // le nom de l'action à effectuer, autrement dit de la méthode à appeler dans ce contrôleur + "params" => array() // les paramètres de la requête (dans un tableau), par défaut aucun + ); - if($query === "" || $query === "/") { // on regarde si la requête est identique (===) à la chaîne vide ou "/", et si oui, c'est qu'on voulait accéder à la page d'accueil - $result["controller"] = "Index"; // le contrôleur est donc Index - $result["action"] = "display"; // on va afficher la page, l'action est donc display - // il n'y a pas de paramètres, donc pas d'affectation de "params" - } - 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 - - /*** consultation des jeux ***/ - if($parts[0] == "jeu" && count($parts) == 2) { // on veut consulter la fiche d'un jeu (jeu/nomDuJeu) - $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 (listejeux/, avec n'importe quoi derrière) - $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] == "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 ***/ - else if($parts[0] == "profil" && count($parts) == 2) { // consultation d'un profil : 2 morceaux (profil/pseudoDeLaPersonne) - $result["controller"] = "Profil"; - $result["action"] = "display"; - $result["params"]["slug"] = $parts[1]; - } - - /*** consultation des classements ***/ - else if($parts[0] == "classement" && count($parts) > 1) { // si classement général : 2 morceaux(classement/global), si classement spécifique : 3 morceaux (classement/jeu/nomDuJeu) - $result["controller"] = "Classement"; - $result["action"] = "display"; - $result["params"]["slug"] = $parts[1]; //on a des paramètres dans l'URL, on le stocke aussi - for($k=2; $k<count($parts); $k++) { // on recompose le bout d'URL encore inutilisé - $result["params"]["slug"] = $result["params"]["slug"].'/'.$parts[$k]; - } - } - - /*** connexion au site ***/ - else if($parts[0] == "connexion" && count($parts) == 1) { // formulaire de connexion - $result["controller"] = "Connexion"; - $result["action"] = "displayForm"; // "displayForm" pour afficher le formulaire - } - else if($parts[0] == "connexion" && count($parts) == 2 && $parts[1] == "valid") { // connexion réussie - $result["controller"] = "Connexion"; - $result["action"] = "displayValid"; // "displayValid" pour afficher la page avec le message de réussite - } - else if($parts[0] == "connexion" && count($parts) == 2 && $parts[1] == "verify") { // connexion réussie - $result["controller"] = "Connexion"; - $result["action"] = "verify"; // "verify" pour appeler la méthode de vérification - } - - /*** inscription au site ***/ - else if($parts[0] == "inscription" && count($parts) == 1) { // formulaire de connexion - $result["controller"] = "Register"; - $result["action"] = "displayForm"; // "displayForm" pour afficher le formulaire - } - else if($parts[0] == "inscription" && count($parts) == 2 && $parts[1] == "valid") { // connexion réussie - $result["controller"] = "Register"; - $result["action"] = "displayValid"; // "displayValid" pour afficher la page avec le message de réussite - } - else if($parts[0] == "inscription" && count($parts) == 2 && $parts[1] == "verify") { // vérification de la validité des champs - $result["controller"] = "Register"; - $result["action"] = "verify"; // "verify" pour appeler la méthode de vérification - } - else if($parts[0] == "inscription" && count($parts) == 2 && $parts[1] == "save") { // réalisation de l'inscription dans la BDD - $result["controller"] = "Register"; - $result["action"] = "save"; // "save" pour appeler la méthode d'enregistrement dans la BDD - } + if ($query === "" || $query === "/") { // on regarde si la requête est identique (===) à la chaîne vide ou "/", et si oui, c'est qu'on voulait accéder à la page d'accueil + $result["controller"] = "Index"; // le contrôleur est donc Index + $result["action"] = "display"; // on va afficher la page, l'action est donc display + // il n'y a pas de paramètres, donc pas d'affectation de "params" + } 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 - /*** Ajout de partie ***/ - else if($parts[0] == "add_partie" && count($parts) == 1){ // formulaire d'ajout de partie - $result["controller"] = "Partie"; - $result["action"] = "displayForm"; // "displayForm" pour afficher le formulaire - } - else if($parts[0] == "add_partie" && count($parts) == 2 && $parts[1] == "valid"){ // Page d'ajout réussie + /*** consultation des jeux ***/ + if ($parts[0] == "jeu" && count($parts) == 2) { // on veut consulter la fiche d'un jeu (jeu/nomDuJeu) + $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 (listejeux/, avec n'importe quoi derrière) + $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] == "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 ***/ + else if ($parts[0] == "profil" && count($parts) == 2) { // consultation d'un profil : 2 morceaux (profil/pseudoDeLaPersonne) + $result["controller"] = "Profil"; + $result["action"] = "display"; + $result["params"]["slug"] = $parts[1]; + } /*** consultation des classements ***/ + else if ($parts[0] == "classement" && count($parts) > 1) { // si classement général : 2 morceaux(classement/global), si classement spécifique : 3 morceaux (classement/jeu/nomDuJeu) + $result["controller"] = "Classement"; + $result["action"] = "display"; + $result["params"]["slug"] = $parts[1]; //on a des paramètres dans l'URL, on le stocke aussi + for ($k = 2; $k < count($parts); $k++) { // on recompose le bout d'URL encore inutilisé + $result["params"]["slug"] = $result["params"]["slug"] . '/' . $parts[$k]; + } + } /*** connexion au site ***/ + else if ($parts[0] == "connexion" && count($parts) == 1) { // formulaire de connexion + $result["controller"] = "Connexion"; + $result["action"] = "displayForm"; // "displayForm" pour afficher le formulaire + } else if ($parts[0] == "connexion" && count($parts) == 2 && $parts[1] == "valid") { // connexion réussie + $result["controller"] = "Connexion"; + $result["action"] = "displayValid"; // "displayValid" pour afficher la page avec le message de réussite + } else if ($parts[0] == "connexion" && count($parts) == 2 && $parts[1] == "verify") { // connexion réussie + $result["controller"] = "Connexion"; + $result["action"] = "verify"; // "verify" pour appeler la méthode de vérification + } /*** inscription au site ***/ + else if ($parts[0] == "inscription" && count($parts) == 1) { // formulaire de connexion + $result["controller"] = "Register"; + $result["action"] = "displayForm"; // "displayForm" pour afficher le formulaire + } else if ($parts[0] == "inscription" && count($parts) == 2 && $parts[1] == "valid") { // connexion réussie + $result["controller"] = "Register"; + $result["action"] = "displayValid"; // "displayValid" pour afficher la page avec le message de réussite + } else if ($parts[0] == "inscription" && count($parts) == 2 && $parts[1] == "verify") { // vérification de la validité des champs + $result["controller"] = "Register"; + $result["action"] = "verify"; // "verify" pour appeler la méthode de vérification + } else if ($parts[0] == "inscription" && count($parts) == 2 && $parts[1] == "save") { // réalisation de l'inscription dans la BDD + $result["controller"] = "Register"; + $result["action"] = "save"; // "save" pour appeler la méthode d'enregistrement dans la BDD + } /*** Ajout de partie ***/ + else if ($parts[0] == "add_partie" && count($parts) == 1) { $result["controller"] = "Partie"; - $result["action"] = "displayValid"; // "displayForm" pour afficher le formulaire - } - else if($parts[0] == "add_partie" && count($parts) == 2 && $parts[1] == "verify"){ // Page d'ajout réussie + $result["action"] = "displayStep0"; + } else if ($parts[0] == "add_partie" && count($parts) == 2 && $parts[1] == "valid") { + $result["controller"] = "Partie"; + $result["action"] = "displayValid"; + } else if ($parts[0] == "add_partie" && count($parts) == 2 && $parts[1] == "step1") { + $result["controller"] = "Partie"; + $result["action"] = "displayStep1"; + } else if ($parts[0] == "add_partie" && count($parts) == 2 && $parts[1] == "step2") { + $result["controller"] = "Partie"; + $result["action"] = "displayStep2"; + } else if ($parts[0] == "add_partie" && count($parts) == 2 && $parts[1] == "verifystep0") { $result["controller"] = "Partie"; - $result["action"] = "verify"; // "displayForm" pour afficher le formulaire + $result["action"] = "verifyStep0"; + } else if ($parts[0] == "add_partie" && count($parts) == 2 && $parts[1] == "verifystep1") { + $result["controller"] = "Partie"; + $result["action"] = "verifyStep1"; + } else if ($parts[0] == "add_partie" && count($parts) == 2 && $parts[1] == "verifystep2") { + $result["controller"] = "Partie"; + $result["action"] = "verifyStep2"; } - - // à chaque fois qu'on crée une nouvelle page, il faut rajouter un cas à cet endroit ! - - // si on n'a rien trouvé que l'on connaissait, alors la page demandée n'existe pas => erreur 404. Ça tombe bien, c'est comme ça qu'on a initialisé la variable ! :-D - } - return $result; // on renvoie le tableau avec les informations nécessaires pour savoir quoi faire - } + + // à chaque fois qu'on crée une nouvelle page, il faut rajouter un cas à cet endroit ! + + // si on n'a rien trouvé que l'on connaissait, alors la page demandée n'existe pas => erreur 404. Ça tombe bien, c'est comme ça qu'on a initialisé la variable ! :-D + } + return $result; // on renvoie le tableau avec les informations nécessaires pour savoir quoi faire + } } diff --git a/app/model/Partie.php b/app/model/Partie.php index a108076ff633e67211f01c187526985d34b999a3..b8208d2ec769a6be0620570934c381feeeb2e9c5 100644 --- a/app/model/Partie.php +++ b/app/model/Partie.php @@ -58,78 +58,68 @@ class Partie extends Model return $R_classement; } - private static function classeur($score, $id_jeu) + + public static function updateClassement() { $db = Database::getInstance(); - $sql = "SELECT classement, score FROM R_joueur_jeu WHERE jeu = :id_jeu SORT BY classement DESC;"; - $stmt = $db->prepare($sql); - if ($stmt->execute(array(":id_jeu" => $id_jeu))) { - while ($tmp = $stmt->fetch()) { - if ($score <= $tmp['score']) { - return $tmp['classement'] + 1; + $sql1 = "SELECT joueur FROM R_joueur_jeu ORDER BY score DESC"; + $sql2 = "UPDATE R_joueur_jeu SET classement = :classement WHERE joueur = :joueur;"; + $stmt1 = $db->prepare($sql1); + $stmt2 = $db->prepare($sql2); + if ($stmt1->execute()){ + $i = 1; + while($row = $stmt1->fetch()){ + if($stmt2->execute(array(":classement" => $i, ":joueur" => $row['joueur']))) + { + + } + else + { + echo "pb updateClassement"; + die(); } + $i++; } } - return 1; - } + else{ + echo "pb updateClassement"; + die(); + } + } - public static function addPartie($joueurs, $scores, $nom_jeu) + public static function addPartie($joueurs, $scores, $jeu) { + print_r($joueurs); + print_r($scores); $db = Database::getInstance(); $datestr = date("Y-m-d H:i:s"); - $sql0 = "SELECT slug FROM R_jeu WHERE nom = :nom_jeu;"; $sql1 = "INSERT INTO R_partie (jeu, date) VALUES (:id_jeu, :date);"; - $sqlp = "SELECT id FROM R_partie WHERE id_jeu = :id_jeu AND date = :date;"; - $sql2 = "SELECT slug FROM R_joueur WHERE nom = :joueur;"; + $sql2 = "SELECT id FROM R_partie WHERE jeu = :id_jeu AND date = :date;"; $sql3 = "SELECT score FROM R_joueur_jeu WHERE joueur = :id_joueur AND jeu = :id_jeu;"; - $sql4 = "INSERT INTO R_joueur_partie (partie, joueur, classement, score, id_jeu) - VALUES (:id_partie, :id_joueur,:classement, :score, :id_jeu);"; - $sql5 = "UPDATE R_joueur_jeu SET score = :new_score, classement = :new_classement WHERE joueur = :id_joueur AND jeu = :id_jeu;"; + $sql4 = "INSERT INTO R_joueur_partie (partie, joueur, classement, score) + VALUES (:partie, :joueur,:classement, :score);"; + $sql5 = "UPDATE R_joueur_jeu SET score = :new_score WHERE joueur = :id_joueur AND jeu = :id_jeu;"; $sqlN = "INSERT INTO R_joueur_jeu (joueur, jeu, score) VALUES (:id_joueur, :id_jeu, :score);"; - $sql6 = "UPDATE R_joueur_jeu SET classement = classement + 1 WHERE classement > :new_classement;"; - $stmt0 = $db->prepare($sql0); $stmt1 = $db->prepare($sql1); - $stmtp = $db->prepare($sqlp); $stmt2 = $db->prepare($sql2); $stmt3 = $db->prepare($sql3); $stmt4 = $db->prepare($sql4); $stmt5 = $db->prepare($sql5); - $stmt6 = $db->prepare($sql6); - - if ($stmt0->execute(array(":nom_jeu" => $nom_jeu))) { - // lecture du slug du jeu - $row = $stmt0->fetch(); - $id_jeu = $row[0]; - if (!Jeu::checkExists($id_jeu)) { - return 1; - } - if ($stmt1->execute(array(":id_jeu" => $id_jeu, ":date" => $datestr))) { + if ($stmt1->execute(array(":id_jeu" => $jeu->slug, ":date" => $datestr))) { // insertion d'une nouvelle partie // on suppose que si l'insertion fonctionne, la lecture aussi, donc que les droits d'accés sont bons - $stmtp->execute(array(":id_jeu" => $id_jeu, ":date" => $datestr)); - $id_partie = $stmtp->fetch()['id']; + $stmt2->execute(array(":id_jeu" => $jeu->slug, ":date" => $datestr)); + $id_partie = $stmt2->fetch()['id']; $m = count($joueurs); - $id_joueur = array_fill(0, $m, 0); - - for ($j = 0; $j < $m; $j++) { - // Parcours des joueurs - $id_joueur[$j] = $row[0]; - // lecture des slugs des joueur - if ($stmt2->execute(array(":joueur" => $joueurs[$j]))) { - $row = $stmt2->fetch(); - $id_joueur[$j] = $row[0]; - } else - return 2; - } $old_score = array_fill(0, $m, 0); for ($j = 0; $j < $m; $j++) { // récupération du score actuel de chaque joueur - if ($stmt3->execute(array(":id_joueur" => $id_joueur[$j], ":id_jeu" => $id_jeu))) { + if ($stmt3->execute(array(":id_joueur" => $joueurs[$j]->slug, ":id_jeu" => $jeu->slug))) { if ($row = $stmt3->fetch()) { // Le joueur a déja joué à ce jeu $old_score[$j] = $row[0]; @@ -137,45 +127,43 @@ class Partie extends Model // ou le joueur n'a jamais joué à ce jeu, on je rajoute à la relation. $old_score[$j] = 1000; $stmtN = $db->prepare($sqlN); - if ($stmtN->execute(array(":id_joueur" => $id_joueur[$j], ":id_jeu" => $id_jeu, ":score" => 1000))) { + if ($stmtN->execute(array(":id_joueur" => $joueurs[$j]->slug, ":id_jeu" => $jeu->slug, ":score" => 1000))) { - } else + } + else return 2; } } } // Calcul de la nouvelle différence de scores et du nouveau classement de chacun - $diff_scores = ELO_scores($scores, $scores, 32); + print_r($old_score); + $diff_scores = ELO_scores($old_score, $scores, 32); + print_r($diff_scores); $classement = self::calcul_classement($diff_scores); - + print_r($classement); for ($j = 0; $j < $m; $j++) { - // Insertion des infos de la partie (avec le score et le classement avant la partie) + // Insertion des infos de la partie (avec le score avant la partie et le classement interne à la partie) // pour chaque joueur - if ($stmt4->execute(array(":id_partie" => $id_partie, - ":id_joueur" => $id_joueur[$j], "id_jeu" => $id_jeu, + if ($stmt4->execute(array(":partie" => $id_partie, + ":joueur" => $joueurs[$j]->slug, ":classement" => $classement[$j], ":score" => $old_score[$j])) ) { $newS = $old_score[$j] + $diff_scores[$j]; - $classement_jeu = Partie::classeur($newS, $id_jeu); - // On met à jour le score et le classement du joueur actuel dans sa relation avec le jeu - if ($stmt5->execute(array(":new_score" => $newS, - ":id_jeu" => $id_jeu, ":id_joueur" => $id_joueur[$j], ":new_classement" => $classement_jeu)) - ) { - // on met à jour le classement des autres joueurs - if ($stmt6->execute(array(":new_classement" => $classement_jeu))) { - return 0; - } else + print($newS."\n"); + // On met à jour le score du joueur actuel dans sa relation avec le jeu + if ($stmt5->execute(array(":new_score" => $newS, + ":id_jeu" => $jeu->slug, ":id_joueur" => $joueurs[$j]->slug)) + ) { + } + else return 2; - } else - return 2; } else return 2; } } else return 2; - } else - return 2; + self::updateClassement(); return 0; } -} \ No newline at end of file +} diff --git a/app/view/Partie/displayStep0.html b/app/view/Partie/displayStep0.html index 3e3c51472e3d81bebf46d01d9be2e60445c055c8..1a9b8a8ec044d40d0a5f5374a6327f160aa3490b 100644 --- a/app/view/Partie/displayStep0.html +++ b/app/view/Partie/displayStep0.html @@ -7,7 +7,7 @@ <h2>Formulaire d'ajout de partie</h2> <h3>Sélection d'un jeu</h3> <div class="addjeu-form"> - <form method="post" action="verifystep0"> + <form method="post" action="add_partie/verifystep0"> <label for="jeu">Jeu : </label> <select name="jeu" id="jeu"> <?php foreach($this->liste as $jeu){ ?> diff --git a/app/view/Partie/displayStep1.html b/app/view/Partie/displayStep1.html index cb5d00e9bd4d7dc58a6cb5506a1129ca24a22437..8aa6d5343a529dd62b2f218e5a5dda32c5db8040 100644 --- a/app/view/Partie/displayStep1.html +++ b/app/view/Partie/displayStep1.html @@ -2,30 +2,42 @@ $page_title = "Formulaire d'ajout de partie"; include(ROOT."/app/view/Includes/header.include.html"); ?> - +<?php $jeuactuel = $this->jeuactuel ?> <article> <h2>Formulaire d'ajout de partie</h2> + <h3>Sélection des joueurs</h3> <div class="addjeu-form"> - <form method="post" action="add_partie/verify"> - <label for="jeu">Jeu : </label> - <select name="jeu" id="jeu"> - <?php foreach($this->liste as $jeu){ ?> - <option><?php echo $jeu->nom; ?></option> - <?php } ?> - </select><br /> - <label for="joueurs">Joueurs :</label> - <select name="joueurs[]" id="joueurs" multiple="multiple" size="5"> + <form method="post" action="verifystep1"> + Jeu : <?php echo $jeuactuel->nom; ?><br /> + Joueurs :<br /> + + <?php for($j=0;$j<$jeuactuel->min_joueurs;$j++){ ?> + <select name="joueur<?php echo $j; ?>" id="joueur<?php echo $j; ?>"> <?php foreach($this->listej as $joueur){ ?> - <option><?php echo $joueur->nom; ?></option> + <option><?php echo $joueur->pseudo; ?></option> <?php } ?> </select> - <br/> - <label for="scores">Scores :</label><input type="text" name="scores" id="scores" /><br/> - <div class="submit"> + <input type="checkbox" name="joueur_check[]" value="<?php echo $j; ?>" checked disabled> a joué.<br /> + <input type="hidden" name="joueur_check[]" value="<?php echo $j; ?>"> + <?php } ?> + + <?php for($j=$jeuactuel->min_joueurs;$j<$jeuactuel->max_joueurs;$j++){ ?> + <select name="joueur<?php echo $j; ?>" id="joueur<?php echo $j; ?>"> + <?php foreach($this->listej as $joueur){ ?> + <option><?php echo $joueur->pseudo; ?></option> + <?php } ?> + </select> + <input type="checkbox" name="joueur_check[]" value="<?php echo $j; ?>" checked> a joué.<br /> + <?php } ?> + + <div class="submit"> <input type="reset" name="reset" value="Réinitialiser" /> - <input type="submit" name="submit" value="Demander l'ajout" /> + <input type="submit" name="submit" value="Étape suivante" /> </div> </form> + <form action="../add_partie"> + <input type="submit" name="submit" value="Étape précédente" /> + </form> </div> </article> diff --git a/app/view/Partie/displayStep2.html b/app/view/Partie/displayStep2.html index cb5d00e9bd4d7dc58a6cb5506a1129ca24a22437..c63162b2667e78aed4ea9a9e21f620a174a88cb8 100644 --- a/app/view/Partie/displayStep2.html +++ b/app/view/Partie/displayStep2.html @@ -2,30 +2,29 @@ $page_title = "Formulaire d'ajout de partie"; include(ROOT."/app/view/Includes/header.include.html"); ?> - +<?php $jeuactuel = $this->jeuactuel ?> <article> <h2>Formulaire d'ajout de partie</h2> + <h3>Entrée des scores</h3> <div class="addjeu-form"> - <form method="post" action="add_partie/verify"> - <label for="jeu">Jeu : </label> - <select name="jeu" id="jeu"> - <?php foreach($this->liste as $jeu){ ?> - <option><?php echo $jeu->nom; ?></option> - <?php } ?> - </select><br /> - <label for="joueurs">Joueurs :</label> - <select name="joueurs[]" id="joueurs" multiple="multiple" size="5"> - <?php foreach($this->listej as $joueur){ ?> - <option><?php echo $joueur->nom; ?></option> - <?php } ?> - </select> - <br/> - <label for="scores">Scores :</label><input type="text" name="scores" id="scores" /><br/> + <form method="post" action="verifystep2"> + Jeu : <?php echo $jeuactuel->nom; ?><br /> + Joueurs : + <ul> + <?php foreach($this->listejactuel as $joueur){ ?> + <li><?php echo $joueur->pseudo; ?> Score obtenu : <input type="text" title="score" name="scores[]" /></li> + <?php } ?> + </ul> + <br /> <div class="submit"> + <input type="reset" name="reset" value="Réinitialiser" /> <input type="submit" name="submit" value="Demander l'ajout" /> </div> </form> + <form action="step1"> + <input type="submit" name="submit" value="Étape précédente" /> + </form> </div> </article>