Merge branch 'master' of https://codefirst.iut.uca.fr/git/jade.van_brabandt/3.01-QCM_MuscuMaths
continuous-integration/drone/push Build is passing Details

pull/37/head
Jeremy DUCOURTHIAL 1 year ago
commit be704e9dbc

@ -51,21 +51,24 @@ class ControllerAdminAdministrators
function add($param) function add($param)
{ {
if ($_SERVER['REQUEST_METHOD'] !== 'POST') { if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
$_SESSION["error"]="Méthode non autorisée."; $_SESSION["error"] = "Méthode non autorisée.";
header("Location:/admin/administrators");
} else { } else {
$username = $_POST['username']; $username = $_POST['username'];
$password = $_POST['password']; $password = $_POST['password'];
$username = trim($_POST['username']); $username = trim($_POST['username']);
$password = trim($_POST['password']); $password = trim($_POST['password']);
if (!isset($username) || !isset($password) || empty($username) || empty($password)) { if (!isset($username) || !isset($password) || empty($username) || empty($password)) {
$_SESSION["error"]="Veuillez remplir tous les champs."; $_SESSION["error"] = "Veuillez remplir tous les champs.";
header("Location:/admin/administrators");
} else { } else {
$Admin = [ $Admin = [
'username' => $username, 'username' => $username,
'password' => $password, 'password' => $password,
]; ];
if ($this->mdAdministrator->verifyAdministratorByName($Admin) != null) { if ($this->mdAdministrator->verifyAdministratorByName($Admin) != null) {
$_SESSION["error"]="Cet admin existe déjà."; $_SESSION["error"] = "Cet admin existe déjà.";
header("Location:/admin/administrators");
} else { } else {
$this->mdAdministrator->addAdministrator($Admin); $this->mdAdministrator->addAdministrator($Admin);
header("Location:/admin/administrators"); header("Location:/admin/administrators");
@ -76,28 +79,48 @@ class ControllerAdminAdministrators
function updatemodal($param) function updatemodal($param)
{ {
if ($_SERVER['REQUEST_METHOD'] !== 'GET') {
$administrator = $this->mdAdministrator->getAdministratorByID($param["id"]); $_SESSION["error"] = "Méthode non autorisée.";
header("Location:/admin/administrators");
echo $this->twig->render($this->vues["adminAdministratorsModal"], [ } else {
'administrator' => $administrator, $administrator = $this->mdAdministrator->getAdministratorByID($param["id"]) ?? null;
]); if ($administrator == null) {
$_SESSION["error"] = "Cet admin n'existe pas.";
header("Location:/admin/administrators");
} else {
echo $this->twig->render($this->vues["adminAdministratorsModal"], [
'administrator' => $administrator,
]);
}
}
} }
function update($param) function update($param)
{ {
if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
$id = $_POST['id']; $_SESSION["error"] = "Méthode non autorisée.";
$username = $_POST['username']; header("Location:/admin/administrators");
$password = $_POST['password']; } else {
$id = $_POST['id'];
$Admin = [ $username = $_POST['username'];
'username' => $username, $password = $_POST['password'];
'password' => $password, $username = trim($_POST['username']);
]; $password = trim($_POST['password']);
if (!isset($username) || !isset($password) || empty($username) || empty($password)) {
$this->mdAdministrator->updateAdministrator($id, $Admin); $_SESSION["error"] = "Veuillez remplir tous les champs.";
header("Location:/admin/administrators");
header("Location:/admin/administrators"); } else {
$Admin = [
'username' => $username,
'password' => $password,
];
if ($this->mdAdministrator->verifyAdministratorByName($Admin) != null) {
$_SESSION["error"] = "Cet admin existe déjà.";
} else {
$this->mdAdministrator->updateAdministrator($id, $Admin);
header("Location:/admin/administrators");
}
}
}
} }
} }

@ -15,69 +15,100 @@ class ControllerAdminChapters
function __construct() function __construct()
{ {
global $vues, $twig; global $vues, $twig;
session_start(); session_start();
try { try {
if($_SESSION["idAdminConnected"] != null){ if ($_SESSION["idAdminConnected"] != null) {
$this->twig =$twig; $this->twig = $twig;
$this->vues = $vues; $this->vues = $vues;
$this->mdChapter = new ModelChapter(); $this->mdChapter = new ModelChapter();
$chapters = $this->mdChapter->getChapters(); $chapters = $this->mdChapter->getChapters();
echo $twig->render($vues["adminChapters"], [ echo $twig->render($vues["adminChapters"], [
'chapters' => $chapters, 'chapters' => $chapters,
]); 'error' => $_SESSION["error"],
} ]);
else { $_SESSION["error"] = null;
header("Location:/loginAdmin"); } else {
} header("Location:/loginAdmin");
} catch (PDOException $e) {
// Gérez les erreurs PDO ici
} catch (Exception $e2) {
// Gérez d'autres erreurs ici
} }
} catch (PDOException $e) {
// Gérez les erreurs PDO ici
} catch (Exception $e2) {
// Gérez d'autres erreurs ici
}
} }
function delete($param) { function delete($param)
{
$this->mdChapter->deleteChapter($param["id"]); $this->mdChapter->deleteChapter($param["id"]);
header("Location:/admin/chapters"); header("Location:/admin/chapters");
} }
function add($param) { function add($param)
{
$name = $_POST['name']; $trimmedName = trim($_POST['name']);
if (isset($_POST['name']) && !empty($_POST['name']) && !empty($trimmedName)) {
$Chapter = [ $name = $_POST['name'];
'name' => $name, $Chapter = [
]; 'name' => $name,
];
$this->mdChapter->addChapter($Chapter); $this->mdChapter->addChapter($Chapter);
header("Location:/admin/chapters");
header("Location:/admin/chapters"); } else {
$_SESSION["error"] = "Veuillez remplir le champ";
header("Location:/admin/chapters");
return;
}
} }
function updatemodal($param) { function updatemodal($param)
{
$chapter = $this->mdChapter->getChapterByID($param["id"]); if ($_SERVER['REQUEST_METHOD'] !== 'GET') {
$_SESSION["error"] = "Méthode non autorisée.";
echo $this->twig->render($this->vues["adminChaptersModal"], [ header("Location:/admin/chapters");
'chapter' => $chapter, } else {
]); $chapter = $this->mdChapter->getChapterByID($param["id"]) ?? null;
if ($chapter == null) {
$_SESSION["error"] = "Chapitre introuvable.";
header("Location:/admin/chapters");
} else {
echo $this->twig->render($this->vues["adminChaptersModal"], [
'chapter' => $chapter,
]);
}
}
} }
function update($param) { function update($param)
{
$id = $_POST['id']; var_dump($_SESSION["error"]);
$name = $_POST['name']; if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
$_SESSION["error"] = "Méthode non autorisée.";
$Chapter = [ header("Location:/admin/chapters");
'name' => $name, } else {
]; $id = $_POST['id'];
$name = $_POST['name'];
$this->mdChapter->updateChapter($id,$Chapter); $trimmedName = trim($_POST['name']);
if (!isset($name) || empty($name) || empty($trimmedName)) {
header("Location:/admin/chapters"); $_SESSION["error"] = "Veuillez remplir le champ.";
header("Location:/admin/chapters");
} else {
$chapter = $this->mdChapter->verifyChapterByName($name) ?? null;
if ($chapter != null) {
$_SESSION["error"] = "Ce chapitre existe déjà.";
header("Location:/admin/chapters");
} else {
$Chapter = [
'name' => $name,
];
$this->mdChapter->updateChapter($id, $Chapter);
header("Location:/admin/chapters");
}
}
}
} }
} }

@ -36,7 +36,9 @@ class ControllerAdminQuestions
echo $twig->render($vues["adminQuestions"], [ echo $twig->render($vues["adminQuestions"], [
'questions' => $questions, 'questions' => $questions,
'chapters' => $chapters, 'chapters' => $chapters,
'error' => $_SESSION["error"],
]); ]);
$_SESSION["error"] = null;
} else { } else {
header("Location:/loginAdmin"); header("Location:/loginAdmin");
} }
@ -55,106 +57,147 @@ class ControllerAdminQuestions
function add($param) function add($param)
{ {
$content = $_POST['content']; if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
$idChapter = intval($_POST['idChapter']); $_SESSION["error"] = "Méthode non autorisée.";
$AnswersPost = array(); header("Location:/admin/questions");
$AnswersPost[0] = $_POST['answer1']; } else {
$AnswersPost[1] = $_POST['answer2']; $trimmedContent = trim($_POST['content']);
$AnswersPost[2] = $_POST['answer3']; $trimmedAnswer1 = trim($_POST['answer1']);
$AnswersPost[3] = $_POST['answer4']; $trimmedAnswer2 = trim($_POST['answer2']);
$correctAnswer = intval($_POST['correctAnswer']); $trimmedAnswer3 = trim($_POST['answer3']);
$trimmedAnswer4 = trim($_POST['answer4']);
$Question = [ if (
'content' => $content, isset($_POST['content']) && !empty($_POST['content']) && !empty($trimmedContent)
'idchapter' => $idChapter, && isset($_POST['answer1']) && !empty($_POST['answer1']) && !empty($trimmedAnswer1)
'idanswergood' => $correctAnswer, && isset($_POST['answer2']) && !empty($_POST['answer2']) && !empty($trimmedAnswer2)
'difficulty' => 1, && isset($_POST['answer3']) && !empty($_POST['answer3']) && !empty($trimmedAnswer3)
'nbfails' => 0, && isset($_POST['answer4']) && !empty($_POST['answer4']) && !empty($trimmedAnswer4)
]; ) {
$content = $_POST['content'];
$idquestion = intval($this->mdQuestion->addQuestion($Question)); $idChapter = intval($_POST['idChapter']);
$AnswersPost = array();
for ($i = 0; $i <= 3; $i++) { $AnswersPost[0] = $_POST['answer1'];
$Answers[] = [ $AnswersPost[1] = $_POST['answer2'];
'content' => $AnswersPost[$i], $AnswersPost[2] = $_POST['answer3'];
'idquestion' => $idquestion, $AnswersPost[3] = $_POST['answer4'];
]; $correctAnswer = intval($_POST['correctAnswer']);
}
$Question = [
'content' => $content,
$answersId = array(); 'idchapter' => $idChapter,
for ($i = 0; $i <= 3; $i++) { 'idanswergood' => $correctAnswer,
$answersId[$i] = $this->mdAnswer->addAnswer($Answers[$i]); 'difficulty' => 1,
'nbfails' => 0,
];
$idquestion = intval($this->mdQuestion->addQuestion($Question));
for ($i = 0; $i <= 3; $i++) {
$Answers[] = [
'content' => $AnswersPost[$i],
'idquestion' => $idquestion,
];
}
$answersId = array();
for ($i = 0; $i <= 3; $i++) {
$answersId[$i] = $this->mdAnswer->addAnswer($Answers[$i]);
}
$Question = [
'content' => $content,
'idchapter' => $idChapter,
'difficulty' => 1,
'nbfails' => 0,
'idanswergood' => $answersId[$correctAnswer],
];
$this->mdQuestion->updateQuestion($idquestion, $Question);
header("Location:/admin/questions");
} else {
$_SESSION["error"] = "Veuillez remplir tous les champs";
header("Location:/admin/questions");
}
} }
$Question = [
'content' => $content,
'idchapter' => $idChapter,
'difficulty' => 1,
'nbfails' => 0,
'idanswergood' => $answersId[$correctAnswer],
];
$this->mdQuestion->updateQuestion($idquestion, $Question);
header("Location:/admin/questions");
} }
function updatemodal($param) function updatemodal($param)
{ {
$question = $this->mdQuestion->getQuestionByID($param["id"]);
$answers = $this->mdAnswer->getAnswersByIDQuestions($param["id"]); $question = $this->mdQuestion->getQuestionByID($param["id"]) ?? null;
$answers = $this->mdAnswer->getAnswersByIDQuestions($param["id"]) ?? null;
$chapters = $this->mdChapter->getChapters() ?? null;
$chapters = $this->mdChapter->getChapters(); if ($question == null || $answers == null || $chapters == null) {
$_SESSION["error"] = "Erreur lors de la récupération des données";
header("Location:/admin/questions");
} else {
echo $this->twig->render($this->vues["adminQuestionsModal"], [ echo $this->twig->render($this->vues["adminQuestionsModal"], [
'question' => $question, 'question' => $question,
'chapters' => $chapters, 'chapters' => $chapters,
'answers' => $answers, 'answers' => $answers,
]); ]);
}
} }
function update($param) function update($param)
{ {
if (
$id = intval($_POST['id']); isset($_POST['content'], $_POST['answer1'], $_POST['answer2'], $_POST['answer3'], $_POST['answer4'], $_POST['idChapter'], $_POST['correctAnswer']) &&
$content = $_POST['content']; !empty($_POST['content']) && !empty(trim($_POST['content'])) &&
$idChapter = intval($_POST['idChapter']); !empty($_POST['answer1']) && !empty(trim($_POST['answer1'])) &&
$correctAnswer = intval($_POST['correctAnswer']); !empty($_POST['answer2']) && !empty(trim($_POST['answer2'])) &&
!empty($_POST['answer3']) && !empty(trim($_POST['answer3'])) &&
$answersId = array(); !empty($_POST['answer4']) && !empty(trim($_POST['answer4'])) &&
$answersId[0] = intval($_POST['IdAnswer1']); !empty($_POST['idChapter']) &&
$answersId[1] = intval($_POST['IdAnswer2']); is_numeric($_POST['correctAnswer']) && $_POST['correctAnswer'] >= 0 && $_POST['correctAnswer'] <= 3
$answersId[2] = intval($_POST['IdAnswer3']); ) {
$answersId[3] = intval($_POST['IdAnswer4']); $id = intval($_POST['id']);
$content = $_POST['content'];
$answers = array(); $idChapter = intval($_POST['idChapter']);
$answers[0] = $_POST['answer1']; $correctAnswer = intval($_POST['correctAnswer']);
$answers[1] = $_POST['answer2'];
$answers[2] = $_POST['answer3']; $answersId = array();
$answers[3] = $_POST['answer4']; $answersId[0] = intval($_POST['IdAnswer1']);
$answersId[1] = intval($_POST['IdAnswer2']);
$answersId[2] = intval($_POST['IdAnswer3']);
$questionDataArray = [ $answersId[3] = intval($_POST['IdAnswer4']);
'content' => $content,
'idchapter' => $idChapter, $answers = array();
'idanswergood' => $answersId[$correctAnswer], $answers[0] = $_POST['answer1'];
]; $answers[1] = $_POST['answer2'];
$answers[2] = $_POST['answer3'];
$this->mdQuestion->updateQuestion($id, $questionDataArray); $answers[3] = $_POST['answer4'];
for ($i = 0; $i <= 3; $i++) {
$answersDataArray[] = [ $questionDataArray = [
'content' => $answers[$i], 'content' => $content,
'id' => $id, 'idchapter' => $idChapter,
'idanswergood' => $answersId[$correctAnswer],
]; ];
}
for ($i = 0; $i <= 3; $i++) { $this->mdQuestion->updateQuestion($id, $questionDataArray);
$this->mdAnswer->updateAnswer($answersId[$i], $answersDataArray[$i]);
}
header("Location:/admin/questions"); for ($i = 0; $i <= 3; $i++) {
$answersDataArray[] = [
'content' => $answers[$i],
'id' => $id,
];
}
for ($i = 0; $i <= 3; $i++) {
$this->mdAnswer->updateAnswer($answersId[$i], $answersDataArray[$i]);
}
header("Location:/admin/questions");
} else {
$_SESSION["error"] = "Veuillez remplir tous les champs";
header("Location:/admin/questions");
}
} }
} }

@ -109,7 +109,7 @@ class ControllerUser
$this->mdPlayer = new ModelPlayer(); $this->mdPlayer = new ModelPlayer();
$player = $this->mdPlayer->getPlayerByID($_SESSION["idPlayerConnected"]); $player = $this->mdPlayer->getPlayerByID($_SESSION["idPlayerConnected"]);
$maxscores = $this->mdPlayer->getMaxScoresWithChapter($player); $maxscores = $this->mdPlayer->getMaxScoresWithChapter($player);
foreach ($maxscores as $maxscore) { foreach ($maxscores as &$maxscore) {
$maxscore["chapter"]=$this->mdChapter->getChapterByID($maxscore["idchapter"])->getName(); $maxscore["chapter"]=$this->mdChapter->getChapterByID($maxscore["idchapter"])->getName();
} }
echo $this->twig->render($this->vues["userStatus"], echo $this->twig->render($this->vues["userStatus"],
@ -228,6 +228,16 @@ class ControllerUser
$_SESSION["Score"] = $_SESSION["Score"] + 80 + 40 * ((30 - $time->s) / 100 * 10 / 3); $_SESSION["Score"] = $_SESSION["Score"] + 80 + 40 * ((30 - $time->s) / 100 * 10 / 3);
} else { } else {
$_SESSION["Questions"][$numQuestion]->setNbFails($_SESSION["Questions"][$numQuestion]->getNbFails() + 1); $_SESSION["Questions"][$numQuestion]->setNbFails($_SESSION["Questions"][$numQuestion]->getNbFails() + 1);
$this->mdQuestion->updateNbFails($_SESSION["Questions"][$numQuestion]);
}
if($_SESSION["Questions"][$numQuestion]->getNbFails() >= 25){
if($_SESSION["Questions"][$numQuestion]->getDifficulty() < 3){
$_SESSION["Questions"][$numQuestion]->setDifficulty($_SESSION["Questions"][$numQuestion]->getDifficulty() + 1);
}
$_SESSION["Questions"][$numQuestion]->setNbFails(0);
$this->mdQuestion->updateDifficulty($_SESSION["Questions"][$numQuestion]);
$this->mdQuestion->updateNbFails($_SESSION["Questions"][$numQuestion]);
} }
if ($numQuestion <= 8) { if ($numQuestion <= 8) {
@ -264,17 +274,17 @@ class ControllerUser
'idplayer' => $_SESSION["idPlayerConnected"], 'idplayer' => $_SESSION["idPlayerConnected"],
'maxscore' => $_SESSION["Score"] 'maxscore' => $_SESSION["Score"]
]; ];
// var_dump($jouer);
// var_dump($this->mdPlayer->verifyJouer($jouer)); // var_dump($this->mdPlayer->verifyJouer($jouer));
// var_dump($jouer['idchapter']);
// var_dump($jouer['idplayer']);
// var_dump($this->mdPlayer->getMaxScoreByPlayerAndChapter($jouer)); // var_dump($this->mdPlayer->getMaxScoreByPlayerAndChapter($jouer));
var_dump($jouer); // var_dump($jouer['maxscore']);
var_dump($this->mdPlayer->verifyJouer($jouer)); // var_dump($jouer['maxscore'] <= $this->mdPlayer->getMaxScoreByPlayerAndChapter($jouer));
// var_dump($jouer['maxscore'] >= $this->mdPlayer->getMaxScoreByPlayerAndChapter($jouer));
if($this->mdPlayer->verifyJouer($jouer) == null){ if($this->mdPlayer->verifyJouer($jouer) == null){
$this->mdPlayer->addJouer($jouer); $this->mdPlayer->addJouer($jouer);
} }
else if($_SESSION["Score"] >= $this->mdPlayer->getMaxScoreByPlayerAndChapter($jouer)) else if($jouer['maxscore'] <= $this->mdPlayer->getMaxScoreByPlayerAndChapter($jouer))
{ {
$this->mdPlayer->updateJouer($jouer); $this->mdPlayer->updateJouer($jouer);
} }
@ -321,6 +331,21 @@ class ControllerUser
$c = $c + 1; $c = $c + 1;
} }
$_SESSION["Score"] = (int)$_SESSION["Score"]; $_SESSION["Score"] = (int)$_SESSION["Score"];
$jouer = [
'idchapter' => $_SESSION["idChapter"],
'idplayer' => $_SESSION["idPlayerConnected"],
'maxscore' => $_SESSION["Score"]
];
if($this->mdPlayer->verifyJouer($jouer) == null){
$this->mdPlayer->addJouer($jouer);
}
else if($jouer['maxscore'] <= $this->mdPlayer->getMaxScoreByPlayerAndChapter($jouer))
{
$this->mdPlayer->updateJouer($jouer);
}
echo $this->twig->render($this->vues["viewScore"], [ echo $this->twig->render($this->vues["viewScore"], [
'score' => $_SESSION["Score"], 'score' => $_SESSION["Score"],
'Final' => $Final, 'Final' => $Final,

@ -60,7 +60,7 @@ class ControllerUserPlayers
$player = $this->mdPlayer->getPlayerByID($param["id"]); $player = $this->mdPlayer->getPlayerByID($param["id"]);
echo $this->twig->render($this->vues["adminAdministratorsModal"], [ echo $this->twig->render($this->vues["adminAdministratorsModal"], [
'administrator' => $administrator, 'player' => $player,
]); ]);
} }

@ -62,7 +62,7 @@ class GatewayChapter
$this->con->executeQuery($query, array(':id' => array($id, PDO::PARAM_INT))); $this->con->executeQuery($query, array(':id' => array($id, PDO::PARAM_INT)));
} }
public function verifyChapter($id) public function verifyChapterByID($id)
{ {
$query = "SELECT chapters.id FROM chapters WHERE id = :id;"; $query = "SELECT chapters.id FROM chapters WHERE id = :id;";
$this->con->executeQuery( $this->con->executeQuery(
@ -74,4 +74,17 @@ class GatewayChapter
$results = $this->con->getResults(); $results = $this->con->getResults();
return $results[0]; return $results[0];
} }
public function verifyChapterByName($name)
{
$query = "SELECT * FROM chapters WHERE name = :name;";
$this->con->executeQuery(
$query,
array(
':name' => array($name, PDO::PARAM_STR)
)
);
$results = $this->con->getResults();
return $results[0];
}
} }

@ -17,7 +17,6 @@ class GatewayJouer
public function addJouer($jouer) public function addJouer($jouer)
{ {
var_dump($jouer);
$query = "INSERT into jouer(idchapter,idplayer,maxscore) values (:idchapter,:idplayer,:maxscore);"; $query = "INSERT into jouer(idchapter,idplayer,maxscore) values (:idchapter,:idplayer,:maxscore);";
$this->con->executeQuery( $this->con->executeQuery(
$query, $query,
@ -27,7 +26,6 @@ class GatewayJouer
'maxscore' => array($jouer['maxscore'], PDO::PARAM_INT) 'maxscore' => array($jouer['maxscore'], PDO::PARAM_INT)
) )
); );
var_dump('toto1');
} }
public function getMaxScoreByPlayerAndChapter($jouer) public function getMaxScoreByPlayerAndChapter($jouer)
@ -47,7 +45,7 @@ class GatewayJouer
public function updateJouer($jouer) public function updateJouer($jouer)
{ {
$query = "UPDATE jouer SET maxscore = :maxscore WHERE jouer.idplayer = :idplayer AND jouer.idchapter = :idchapter;"; $query = "UPDATE jouer SET jouer.maxscore = :maxscore WHERE jouer.idplayer = :idplayer AND jouer.idchapter = :idchapter AND jouer.maxscore <= :maxscore;";
$this->con->executeQuery( $this->con->executeQuery(
$query, $query,
array( array(

@ -62,6 +62,29 @@ class GatewayQuestion
); );
} }
public function updateNbFails($question){
var_dump($question);
$query = "UPDATE questions SET nbfails = :nbfails WHERE id = :id;";
$this->con->executeQuery(
$query,
array(
':nbfails' => array($question->getNbFails(), PDO::PARAM_INT),
':id' => array($question->getId(), PDO::PARAM_INT),
)
);
}
public function updateDifficulty($question){
$query = "UPDATE questions SET difficulty = :difficulty WHERE id = :id;";
$this->con->executeQuery(
$query,
array(
':difficulty' => array($question->getDifficulty(), PDO::PARAM_INT),
':id' => array($question->getId(), PDO::PARAM_INT),
)
);
}
public function deleteQuestionByID($id) public function deleteQuestionByID($id)
{ {
$query = "DELETE FROM questions WHERE id = :id;"; $query = "DELETE FROM questions WHERE id = :id;";

@ -22,8 +22,12 @@ class ModelAdministrator
public function getAdministratorByID($id) public function getAdministratorByID($id)
{ {
$administratorDataArray = $this->gwAdministrator->getAdministratorByID($id); $administratorDataArray = $this->gwAdministrator->getAdministratorByID($id);
$administrator = new Administrator($administratorDataArray["id"],$administratorDataArray["username"], $administratorDataArray["password"]); if ($administratorDataArray == null) {
return $administrator; return null;
} else {
$administrator = new Administrator($administratorDataArray["id"], $administratorDataArray["username"], $administratorDataArray["password"]);
return $administrator;
}
} }
public function getAdministrators() public function getAdministrators()
@ -31,7 +35,7 @@ class ModelAdministrator
$administratorsDataArray = $this->gwAdministrator->getAdministrators(); $administratorsDataArray = $this->gwAdministrator->getAdministrators();
$administrators = array(); $administrators = array();
foreach ($administratorsDataArray as $administratorDataArray) { foreach ($administratorsDataArray as $administratorDataArray) {
$administrator = new Administrator($administratorDataArray["id"],$administratorDataArray["username"], $administratorDataArray["password"]); $administrator = new Administrator($administratorDataArray["id"], $administratorDataArray["username"], $administratorDataArray["password"]);
$administrators[] = $administrator; $administrators[] = $administrator;
} }
return $administrators; return $administrators;

@ -30,12 +30,16 @@ class ModelAnswer
function getAnswersByIDQuestions($idQuestion) function getAnswersByIDQuestions($idQuestion)
{ {
$answersDataArray = $this->gwAnswer->getAnswersByIDQuestions($idQuestion); $answersDataArray = $this->gwAnswer->getAnswersByIDQuestions($idQuestion);
$answers = array(); if ($answersDataArray == null) {
foreach ($answersDataArray as $answerDataArray) { return null;
$answer = new Answer($answerDataArray['id'], $answerDataArray['content'], $idQuestion); } else {
$answers[] = $answer; $answers = array();
foreach ($answersDataArray as $answerDataArray) {
$answer = new Answer($answerDataArray['id'], $answerDataArray['content'], $idQuestion);
$answers[] = $answer;
}
return $answers;
} }
return $answers;
} }
function updateAnswer($answersId, $answer) function updateAnswer($answersId, $answer)

@ -17,12 +17,16 @@ class ModelChapter
function getChapters() function getChapters()
{ {
$chaptersDataArray = $this->gwChapter->getChapters(); $chaptersDataArray = $this->gwChapter->getChapters();
$chapters = array(); if ($chaptersDataArray == null) {
foreach ($chaptersDataArray as $chapterDataArray) { return null;
$chapter = new Chapter($chapterDataArray['id'],$chapterDataArray["name"]); } else {
$chapters[] = $chapter; $chapters = array();
foreach ($chaptersDataArray as $chapterDataArray) {
$chapter = new Chapter($chapterDataArray['id'], $chapterDataArray["name"]);
$chapters[] = $chapter;
}
return $chapters;
} }
return $chapters;
} }
function deleteChapter($id) function deleteChapter($id)
@ -38,8 +42,12 @@ class ModelChapter
function getChapterByID($id) function getChapterByID($id)
{ {
$chapterDataArray = $this->gwChapter->getChapterByID($id); $chapterDataArray = $this->gwChapter->getChapterByID($id);
$chapter = new Chapter($chapterDataArray['id'],$chapterDataArray['name']); if ($chapterDataArray == null) {
return $chapter; return null;
} else {
$chapter = new Chapter($chapterDataArray['id'], $chapterDataArray['name']);
return $chapter;
}
} }
function updateChapter($id, $chapter) function updateChapter($id, $chapter)
@ -48,7 +56,15 @@ class ModelChapter
} }
public function verifyChapter($chapter) public function verifyChapter($chapter)
{ {
$id = $this->gwChapter->verifyChapter($chapter); $id = $this->gwChapter->verifyChapterByID($chapter);
return $id;
}
public function verifyChapterByName($name)
{
$id = $this->gwChapter->verifyChapterByName($name);
if ($id == null) {
return null;
}
return $id; return $id;
} }
} }

@ -15,7 +15,7 @@ class ModelQuestion
$this->gwQuestion = new GatewayQuestion(); $this->gwQuestion = new GatewayQuestion();
} }
function getQuestions() : array function getQuestions(): array
{ {
$questionsDataArray = $this->gwQuestion->getQuestions(); $questionsDataArray = $this->gwQuestion->getQuestions();
$questions = array(); $questions = array();
@ -50,15 +50,19 @@ class ModelQuestion
function getQuestionByID($id) function getQuestionByID($id)
{ {
$questionDataArray = $this->gwQuestion->getQuestionByID($id); $questionDataArray = $this->gwQuestion->getQuestionByID($id);
$question = new Question( if ($questionDataArray == null) {
intval($questionDataArray['id']), return null;
$questionDataArray['content'], } else {
intval($questionDataArray['idchapter']), $question = new Question(
intval($questionDataArray['idanswergood']), intval($questionDataArray['id']),
intval($questionDataArray['difficulty']), $questionDataArray['content'],
intval($questionDataArray['nbfails']) intval($questionDataArray['idchapter']),
); intval($questionDataArray['idanswergood']),
return $question; intval($questionDataArray['difficulty']),
intval($questionDataArray['nbfails'])
);
return $question;
}
} }
function updateQuestion($id, $questionDataArray) function updateQuestion($id, $questionDataArray)
@ -66,6 +70,14 @@ class ModelQuestion
$this->gwQuestion->updateQuestion($id, $questionDataArray); $this->gwQuestion->updateQuestion($id, $questionDataArray);
} }
function updateNbFails($question){
$this->gwQuestion->updateNbFails($question);
}
function updateDifficulty($question){
$this->gwQuestion->updateDifficulty($question);
}
function getQuestionsByChapterAndDifficulty($chapter, $difficulty) function getQuestionsByChapterAndDifficulty($chapter, $difficulty)
{ {
$questionsDataArray = $this->gwQuestion->getQuestionsByChapterAndDifficulty($chapter, $difficulty); $questionsDataArray = $this->gwQuestion->getQuestionsByChapterAndDifficulty($chapter, $difficulty);

@ -2,14 +2,14 @@
<html lang="fr"> <html lang="fr">
<head> <head>
<meta charset=utf-8> <meta charset="UTF-8">
<title>Math'Educ</title> <title>Math'Educ</title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet" <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet"
integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous"> integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous">
<link rel="stylesheet" href="css/global.css"> <link rel="stylesheet" href="../css/global.css">
</head> </head>
<body style="color:white;"> <body id="bodyStyle">
<div class="container-fluid text-center pt-5" style="height:85vh;"> <div class="container-fluid text-center pt-5" style="height:85vh;">
<form class="row g-3 needs-validation w-100" action="traitementAjout.php" method="post" novalidate> <form class="row g-3 needs-validation w-100" action="traitementAjout.php" method="post" novalidate>
<div class="container fs-2"> <div class="container fs-2">

@ -1,7 +1,7 @@
<!DOCTYPE html> <!DOCTYPE html>
<html lang="fr"> <html lang="fr">
<head> <head>
<title>Maths'Educ</title> <title>Math'Educ</title>
<meta charset="UTF-8"> <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous"> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous">
@ -15,7 +15,8 @@
</a> </a>
</div> </div>
<div class="container mt-5 text-light fs-4"> <div class="container mt-5 text-light fs-4">
<h1>Liste des administrators</h1> <h1>Liste des administrators</h1>
<p class="text-center bg-danger"> {{ error }} </p>
<ul class="list-group"> <ul class="list-group">
{% for admin in administrators %} {% for admin in administrators %}
<li class="list-group-item d-flex justify-content-between align-items-center border-dark text-light bg-secondary"> <li class="list-group-item d-flex justify-content-between align-items-center border-dark text-light bg-secondary">

@ -1,15 +1,14 @@
<!DOCTYPE html> <!DOCTYPE html>
<html lang="fr"> <html lang="fr">
<head> <head>
<title>Maths'Educ</title> <title>Math'Educ</title>
<meta charset="UTF-8"> <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous"> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous">
</script> <link rel="stylesheet" href="../../../css/global.css">
<link rel="stylesheet" href="css/global.css">
</head> </head>
<body> <body id="bodyStyle">
<div class="modal fade" id="modalUpdateAdministrators"> <div class="modal fade" id="modalUpdateAdministrators">
<div class="modal-dialog" role="document"> <div class="modal-dialog" role="document">
<div class="modal-content"> <div class="modal-content">

@ -1,7 +1,7 @@
<!DOCTYPE html> <!DOCTYPE html>
<html lang="fr"> <html lang="fr">
<head> <head>
<title>Maths'Educ</title> <title>Math'Educ</title>
<meta charset="UTF-8"> <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous"> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous">
@ -17,6 +17,7 @@
</div> </div>
<div class="container mt-5 text-light fs-4"> <div class="container mt-5 text-light fs-4">
<h1>Liste des chapitres</h1> <h1>Liste des chapitres</h1>
<p class="text-center bg-danger"> {{ error }} </p>
<ul class="list-group"> <ul class="list-group">
{% for chapter in chapters %} {% for chapter in chapters %}
<li class="list-group-item d-flex justify-content-between align-items-center border-dark text-light bg-secondary"> <li class="list-group-item d-flex justify-content-between align-items-center border-dark text-light bg-secondary">

@ -1,15 +1,15 @@
<!DOCTYPE html> <!DOCTYPE html>
<html lang="fr"> <html lang="fr">
<head> <head>
<title>Maths'Educ</title> <title>Math'Educ</title>
<meta charset="UTF-8"> <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous"> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous">
</script> </script>
<link rel="stylesheet" href="css/global.css"> <link rel="stylesheet" href="../../../css/global.css">
</head> </head>
<body> <body id="bodyStyle">
<div class="modal fade" id="modalUpdateChapters"> <div class="modal fade" id="modalUpdateChapters">
<div class="modal-dialog" role="document"> <div class="modal-dialog" role="document">
<div class="modal-content"> <div class="modal-content">

@ -1,7 +1,7 @@
<!DOCTYPE html> <!DOCTYPE html>
<html lang="fr"> <html lang="fr">
<head> <head>
<title>Maths'Educ</title> <title>Math'Educ</title>
<meta charset="UTF-8"> <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous"> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous">
@ -17,6 +17,7 @@
</div> </div>
<div class="container mt-5 text-light fs-4"> <div class="container mt-5 text-light fs-4">
<h1>Liste des questions</h1> <h1>Liste des questions</h1>
<p class="text-center bg-danger"> {{ error }} </p>
<ul class="list-group"> <ul class="list-group">
{% for question in questions %} {% for question in questions %}
<li class="list-group-item d-flex justify-content-between align-items-center border-dark text-light bg-secondary"> <li class="list-group-item d-flex justify-content-between align-items-center border-dark text-light bg-secondary">
@ -31,7 +32,7 @@
</div> </div>
<div class="container mt-3 d-flex justify-content-between"> <div class="container mt-3 d-flex justify-content-between">
<a type="button" href="/admin/chapters" class="btn btn-secondary fs-5"> ← Chapitres</a> <a type="button" href="/admin/chapters" class="btn btn-secondary fs-5"> ← Chapitres</a>
<button type="button" class="btn btn-primary fs-5" data-bs-toggle="modal" data-bs-target="#modalquestions">Ajouter un chapitre</button> <button type="button" class="btn btn-primary fs-5" data-bs-toggle="modal" data-bs-target="#modalquestions">Ajouter une question</button>
<a type="button" href="/admin/administrators" class="btn btn-secondary fs-5">Administrateurs →</a> <a type="button" href="/admin/administrators" class="btn btn-secondary fs-5">Administrateurs →</a>
</div> </div>

@ -1,15 +1,15 @@
<!DOCTYPE html> <!DOCTYPE html>
<html lang="fr"> <html lang="fr">
<head> <head>
<title>Maths'Educ</title> <title>Math'Educ</title>
<meta charset="UTF-8"> <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous"> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous">
</script> </script>
<link rel="stylesheet" href="css/global.css"> <link rel="stylesheet" href="../../../css/global.css">
</head> </head>
<body> <body id="bodyStyle">
<div class="modal fade" id="modalUpdateQuestions"> <div class="modal fade" id="modalUpdateQuestions">
<div class="modal-dialog" role="document"> <div class="modal-dialog" role="document">
<div class="modal-content"> <div class="modal-content">

@ -2,9 +2,9 @@
<html lang="fr"> <html lang="fr">
<head> <head>
<meta charset="UTF-8"> <meta charset="UTF-8">
<title>Maths'Educ</title> <title>Math'Educ</title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous"> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous">
<link rel="stylesheet" href="css/global.css"> <link rel="stylesheet" href="../css/global.css">
</head> </head>
<body id="bodyStyle"> <body id="bodyStyle">
<div class="fs-1 text-light text-center mt-5"> <div class="fs-1 text-light text-center mt-5">

@ -3,9 +3,9 @@
<head> <head>
<meta charset=utf-8> <meta charset=utf-8>
<title>Maths'Educ</title> <title>Math'Educ</title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous"> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous">
<link rel="stylesheet" href="css/global.css"> <link rel="stylesheet" href="../css/global.css">
</head> </head>
<body id="bodyStyle"> <body id="bodyStyle">

@ -2,7 +2,7 @@
<html lang="fr"> <html lang="fr">
<head> <head>
<meta charset=utf-8> <meta charset=utf-8>
<title>Maths'Educ</title> <title>Math'Educ</title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous"> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous">
<link rel="stylesheet" href="/css/global.css"> <link rel="stylesheet" href="/css/global.css">
</head> </head>

@ -2,9 +2,9 @@
<html lang="fr"> <html lang="fr">
<head> <head>
<meta charset="utf-8"> <meta charset="utf-8">
<title>Maths'Educ - Connexion</title> <title>Math'Educ - Connexion</title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous"> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous">
<link rel="stylesheet" href="css/global.css"> <link rel="stylesheet" href="../css/global.css">
</head> </head>
<body id="bodyStyle"> <body id="bodyStyle">
<div> <div>

@ -2,9 +2,9 @@
<html lang="fr"> <html lang="fr">
<head> <head>
<meta charset="utf-8"> <meta charset="utf-8">
<title>Maths'Educ - Connexion</title> <title>Math'Educ - Connexion</title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous"> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous">
<link rel="stylesheet" href="css/global.css"> <link rel="stylesheet" href="../css/global.css">
</head> </head>
<body id="bodyStyle"> <body id="bodyStyle">
<div> <div>

@ -3,8 +3,8 @@
<head> <head>
<meta charset=utf-8> <meta charset=utf-8>
<title>Maths'Educ</title> <title>Math'Educ</title>
<link rel="stylesheet" href="css/global.css"> <link rel="stylesheet" href="../css/global.css">
<link rel="stylesheet" href="css/chrono.css"> <link rel="stylesheet" href="css/chrono.css">
<link rel="stylesheet" href="css/progressBar.css"> <link rel="stylesheet" href="css/progressBar.css">
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous"> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous">

@ -3,8 +3,8 @@
<head> <head>
<meta charset=utf-8> <meta charset=utf-8>
<title>Maths'Educ</title> <title>Math'Educ</title>
<link rel="stylesheet" href="css/global.css"> <link rel="stylesheet" href="../css/global.css">
<link rel="stylesheet" href="css/chrono.css"> <link rel="stylesheet" href="css/chrono.css">
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous"> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous">
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js" integrity="sha384-C6RzsynM9kWDrMNeT87bh95OGNyZPhcTNXj1NW7RuBCsyN/o0jlpcV8Qyq46cDfL" crossorigin="anonymous"></script> <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js" integrity="sha384-C6RzsynM9kWDrMNeT87bh95OGNyZPhcTNXj1NW7RuBCsyN/o0jlpcV8Qyq46cDfL" crossorigin="anonymous"></script>

@ -1,9 +1,9 @@
<!DOCTYPE html> <!DOCTYPE html>
<html lang="fr"> <html lang="fr">
<head> <head>
<title>Maths'Educ</title> <title>Math'Educ</title>
<meta charset="UTF-8"> <meta charset="UTF-8">
<link rel="stylesheet" href="css/global.css"> <link rel="stylesheet" href="../css/global.css">
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous"> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous">
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js" integrity="sha384-C6RzsynM9kWDrMNeT87bh95OGNyZPhcTNXj1NW7RuBCsyN/o0jlpcV8Qyq46cDfL" crossorigin="anonymous"></script> <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js" integrity="sha384-C6RzsynM9kWDrMNeT87bh95OGNyZPhcTNXj1NW7RuBCsyN/o0jlpcV8Qyq46cDfL" crossorigin="anonymous"></script>

@ -1,14 +1,14 @@
<!DOCTYPE html> <!DOCTYPE html>
<html lang="fr"> <html lang="fr">
<head> <head>
<title>Maths Educ</title> <title>Math'Educ</title>
<meta charset="UTF-8"> <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous"> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous">
<link rel="stylesheet" href="css/global.css"> <link rel="stylesheet" href="../../../css/global.css">
</head> </head>
<body> <body id="bodyStyle">
<div class="modal fade" id="modalUpdateAdministrators"> <div class="modal fade" id="modalUpdateAdministrators">
<div class="modal-dialog" role="document"> <div class="modal-dialog" role="document">
<div class="modal-content"> <div class="modal-content">

@ -1,11 +1,11 @@
<!DOCTYPE html> <!DOCTYPE html>
<html lang="fr"> <html lang="fr">
<head> <head>
<title>Maths Educ</title> <title>Math'Educ</title>
<meta charset="UTF-8"> <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous"> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous">
<link rel="stylesheet" href="css/global.css"> <link rel="stylesheet" href="../css/global.css">
</head> </head>
<body id="bodyStyle"> <body id="bodyStyle">
@ -14,16 +14,21 @@
Retour Retour
</a> </a>
</div> </div>
<div class="container mt-5"> <div class="container mt-5 fs-4 text-light text-center">
<div class="col-5 bg-light border border-warning rounded"> <div class="row gy-2 mt-0 justify-content-center">
<p> Player Nickname : </p> <div class="col-3 bg-secondary border rounded">
<p>{{ player.nickname }} </p> <p> Player Nickname : </p>
<p>{{ player.nickname }} </p>
</div>
</div> </div>
{% for maxscore in maxscores %} {% for maxscore in maxscores %}
<div class="col-5 bg-light border border-warning rounded"> <div class="row gy-2 mt-0 justify-content-center">
<p> Maxscore pour le chapitre {{ maxscore["chapter"] }} : </p> <div class="col-3 bg-secondary border rounded">
<p>{{ maxscore["maxscore"] }} </p> <p> Maxscore pour le chapitre {{ maxscore["chapter"] }} : </p>
<p>{{ maxscore["maxscore"] }} </p>
</div>
</div> </div>
{% endfor %} {% endfor %}
</div>
</body> </body>
</html> </html>

@ -2,9 +2,9 @@
<html lang="fr"> <html lang="fr">
<head> <head>
<title>Maths'Educ</title> <title>Math'Educ</title>
<meta charset="UTF-8"> <meta charset="UTF-8">
<link rel="stylesheet" href="css/global.css"> <link rel="stylesheet" href="../css/global.css">
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="css/confetti.css"> <link rel="stylesheet" href="css/confetti.css">
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous"> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous">

Loading…
Cancel
Save