diff --git a/app/controller/PartieController.php b/app/controller/PartieController.php index 35d4fbdf73dcb788abaf0b144cc3874e154d6d27..63d65ea85e510a8cc9001992a68aa91982b1bb37 100644 --- a/app/controller/PartieController.php +++ b/app/controller/PartieController.php @@ -28,12 +28,26 @@ class PartieController extends Controller $data = $_POST; $scores = explode(";", $data["scores"]); - if (count($scores) != count($data["joueurs"])){ + $ns = count($scores); + $nj = count($data["joueurs"]); + if ($ns != $nj){ //appeler une fonction d'erreur echo "<h1>Erreur : scores et joueurs incohérents</h1>"; die(); } - + + 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>"; + die(); + } + } + + if(!Jeu::checkExists($data['jeu'])){ + echo "<h1>Erreur : le jeu entré est introuvable dans la BD.</h1>"; + die(); + } + $pb = Partie::addPartie($data['joueurs'], $scores, $data['jeu']); if(!$pb) header('Location:valid'); // Redirection vers la page OK @@ -46,16 +60,11 @@ class PartieController extends Controller echo "<h1>Erreur de connexion à la BD.</h1>"; die(); break; - case 3: - echo "<h1>Erreur : un des joueurs est entré est introuvable dans la BD.</h1>"; - die(); - break; - case 4: - echo "<h1>Erreur : le jeu entré est introuvable dans la BD.</h1>"; + default: + echo "<h1>Erreur non gérée.</h1>"; die(); break; } - } } \ No newline at end of file diff --git a/app/model/Partie.php b/app/model/Partie.php index 3b9ea7b6f95befc914ee86c8f384ce7e9b7dec23..f1a3e40b59cb904cc72cc8eb6f13a85a825ffda5 100644 --- a/app/model/Partie.php +++ b/app/model/Partie.php @@ -99,108 +99,82 @@ class Partie extends Model if ($stmt0->execute(array(":nom_jeu" => $nom_jeu))) { // lecture du slug du jeu - if ($row = $stmt0->fetch()) { - $id_jeu = $row[0]; - if (!Jeu::checkExists($id_jeu)){ - return 1; - } - - if ($stmt1->execute(array(":id_jeu" => $id_jeu, ":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']; - - $m = count($joueurs); - $id_joueur = array_fill(0, $m, 0); + $row = $stmt0->fetch(); + $id_jeu = $row[0]; + if (!Jeu::checkExists($id_jeu)) { + return 1; + } - for ($j = 0; $j < $m; $j++) { - // Parcours des joueurs + if ($stmt1->execute(array(":id_jeu" => $id_jeu, ":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']; + + $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]; - // lecture des slugs des joueur - if ($stmt2->execute(array(":joueur" => $joueurs[$j]))) { - if ($row = $stmt2->fetch()) { - $id_joueur[$j] = $row[0]; - } - else - return 3; - } - else{ - echo "test"; - 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 ($row = $stmt3->fetch()) { - // Le joueur a déja joué à ce jeu - $old_score[$j] = $row[0]; - } else { - // 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))) { - - } - else{ - echo test; - return 2; - } - } + } 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 ($row = $stmt3->fetch()) { + // Le joueur a déja joué à ce jeu + $old_score[$j] = $row[0]; + } else { + // 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))) { + + } else + return 2; } + } - // Calcul de la nouvelle différence de scores et du nouveau classement de chacun - $diff_scores = ELO_scores($scores, $scores, 32); - $classement = self::calcul_classement($diff_scores); - - for ($j = 0; $j < $m; $j++) { - // Insertion des infos de la partie (avec le score et le classement avant la partie) - // pour chaque joueur - if ($stmt4->execute(array(":id_partie" => $id_partie, - ":id_joueur" => $id_joueur[$j], "id_jeu" => $id_jeu, - ":classement" => $classement[$j], ":score" => $old_score[$j])) + } + // Calcul de la nouvelle différence de scores et du nouveau classement de chacun + $diff_scores = ELO_scores($scores, $scores, 32); + $classement = self::calcul_classement($diff_scores); + + for ($j = 0; $j < $m; $j++) { + // Insertion des infos de la partie (avec le score et le classement avant la partie) + // pour chaque joueur + if ($stmt4->execute(array(":id_partie" => $id_partie, + ":id_joueur" => $id_joueur[$j], "id_jeu" => $id_jeu, + ":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)) ) { - $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{ - echo "test"; - return 2; - } - } - else{ - echo "test"; + // on met à jour le classement des autres joueurs + if ($stmt6->execute(array(":new_classement" => $classement_jeu))) { + return 0; + } else return 2; - } - } - else{ - echo "test"; + } else return 2; - } - } - } - else{ - echo "test1"; - return 2; + } else + return 2; } - - } - else - return 4; - } - else + } else + return 2; + } else return 2; return 0; }