ADD : liste de scientifique pour l'admin

php
Renaud BEURET 1 year ago
parent 730e478691
commit 7d8eb40879

@ -90,4 +90,11 @@ class Validation
return $pendu;
}
public static function valPosInt($val) : int {
if(is_int($val) && $val > 0) {
return 0;
}
return $val;
}
}

@ -4,9 +4,9 @@ namespace config;
$config = [
"rep" => __DIR__.'/../',
"db" => ["dsn" => 'pgsql:host=localhost;dbname=dbrebeuret',
"login" => 'rebeuret',
"mdp" => 'achanger'],
"db" => ["dsn" => 'pgsql:host=localhost;dbname=sae2a',
"login" => 'postgres',
"mdp" => 'SKf43V4hmD7a'],
"templates" => ["index" => 'vues/index.php',
"pseudo" => 'pseudo.html',
"jouer" => "jouer.html",

@ -1,5 +1,6 @@
<?php
namespace controller;
use config\Validation;
use Exception;
use PDOException;
use model\MdlDifficulte;
@ -10,8 +11,9 @@ use model\Scientifique;
//gerer la connexion des admins
class AdminController {
public function __construct(string $action){
public function __construct(array $params){
global $twig;
global $dVue;
//on initialise un tableau d'erreur pour être utilisé par la vue erreur
$dVueErreur = [];
@ -20,13 +22,16 @@ class AdminController {
if($_SESSION["isAdmin"]==true){
//donner la page admin a l'admin
try {
switch($action) {
switch($params['action']) {
case '':
echo $twig->render('admin/accueil.html');
break;
case 'stats':
echo $twig->render('admin/stats.html');
break;
case 'ajouterScientifiques':
$sexe = new MdlSexe();
$theme = new MdlThematique();
@ -47,15 +52,36 @@ class AdminController {
}
echo $twig->render('admin/ajouterScientifiques.html',['sexe' => $sexe->getAll(), 'themes' => $theme->getAll(), 'difficultes' => $diff->getAll()]);
break;
//mauvaise action
case 'listeScientifiques':
$ms = new MdlScientifique();
if (!isset($params['id'])) {
$page = 1;
} else {
$page = Validation::valPosInt($params['id']);
}
$dVue['listeScientifiques'] = $ms->getScientifiquesParPage($page);
$dVue['pageMax'] = $ms->getMaxPages();
$dVue['page'] = $page;
if ($page - 1 <= 0) {
$dVue['pagePrec'] = 1;
} else {
$dVue['pagePrec'] = $page - 1;
}
if ($page + 1 >= $dVue['pageMax']) {
$dVue['pageSuiv'] = $dVue['pageMax'];
} else {
$dVue['pageSuiv'] = $page + 1;
}
echo $twig->render('admin/listeScientifiques.html',['dVue' => $dVue]);
break;
//mauvaise action
default:
$dVueErreur[] = "Erreur d'appel php";
echo $twig->render('erreur.html', ['dVueErreur' => $dVueErreur]);
break;
}
} catch (\PDOException $e) {
$dVueErreur[] = 'Erreur avec la base de données !';
echo $twig->render('erreur.html', ['dVueErreur' => $dVueErreur]);
} catch (\Exception $e2) {
$dVueErreur[] = 'Erreur inattendue !';
echo $twig->render('erreur.html', ['dVueErreur' => $dVueErreur]);

@ -27,6 +27,7 @@ class FrontController
global $twig, $router, $dVue;
global $basePath;
global $dVueErreur;
//altorouter
$router = new AltoRouter();
@ -36,7 +37,7 @@ class FrontController
$router->map('GET|POST','/index.php','UserController');
$router->map('GET|POST','/pseudo/[a:action]?','PseudoController');
$router->map('GET|POST','/admin/[a:action]','AdminController');
$router->map('GET|POST','/admin/[a:action]?/[i:id]?','AdminController');
$router->map('GET|POST','/[a:action]?','UserController');
session_start();
@ -58,11 +59,11 @@ class FrontController
break;
case 'AdminController':
$action = $match['params']['action'];
$action = $match['params']['action'] ?? '';
//if (!MdlAdmin::isAdmin()) {
// $action = 'login';
//}
new AdminController($action);
new AdminController($match['params']);
break;
case 'PseudoController':
@ -74,10 +75,6 @@ class FrontController
echo $twig->render('accueil.html', ['dVueErreur' => $dVueErreur]);
break;
}
} catch (PDOException $e) {
$dVueErreur[] = 'Erreur avec la base de données !';
$dVueErreur[] = $e->getMessage();
echo $twig->render('erreur.html', ['dVueErreur' => $dVueErreur]);
} catch (LoginException $e) {
echo $twig->render('erreur.html', ['dVueErreur' => $dVueErreur]);
echo $twig->render('login.html');

@ -16,7 +16,6 @@
// Tableau qui contient les messages d'erreur
$dVueErreur = [];
$dVue = [];
$dVue['basePath'] = $basePath;
$cont = new FrontController();

@ -41,4 +41,20 @@ class ScientifiqueGateway
":idSexe"=>[$sci->getSexe()->getId(),$this->con::PARAM_STR]
]);
}
public function getScientifiquesParPages(int $currentPage, int $nbElemByPage) : array {
$query = 'SELECT * FROM Scientifique LIMIT :nbElem OFFSET :ind ';
$index = ($currentPage-1)*$nbElemByPage;
$this->con->executeQuery($query,array(
':ind' => array($index,\PDO::PARAM_INT),
':nbElem' => array($nbElemByPage,\PDO::PARAM_INT)
));
return $this->con->getResults();
}
public function getNbScientifique() : int {
$query = 'SELECT DISTINCT count(*) as val FROM Scientifique';
$this->con->executeQuery($query);
return $this->con->getResults()[0]['val'];
}
}

@ -1,16 +0,0 @@
<?php
namespace model;
class ScientistGateway
{
private $con;
function __construct(Connection $co) {
$this->con = $co;
}
// function findByName(string $name) :? Scientist {
// $usr = null;
// }
}

@ -44,4 +44,37 @@ class MdlScientifique extends MdlBase{
public function addScientifique(Scientifique $s){
return $this->gw->addScientifique($s);
}
public function getScientifiquesParPage(int $page) : array {
$nbElemParPage = 20;
$pageMax = ceil($this->gw->getNbScientifique()/$nbElemParPage);
if ($page <= 0) {
$page = 1;
} elseif ($page > $pageMax) {
$page = $pageMax;
}
$result = $this->gw->getScientifiquesParPages($page,$nbElemParPage);
$scientifiques = array();
foreach ($result as $scientifique) {
$sexe = $this->mdlSexe->getFromId($scientifique['idsexe']);
$difficulte = $this->mdlDifficulte->getFromId($scientifique['iddifficulte']);
$thematique = $this->mdlThematique->getFromId($scientifique['idthematique']);
$scientifiques[] = new Scientifique($scientifique['id'],
$scientifique['nom'],
$scientifique['prenom'],
$scientifique['photo'],
new DateTime($scientifique['datenaissance']),
$scientifique['descriptif'],
$scientifique['ratiotrouvee'],
$thematique,
$difficulte,
$sexe);
}
return $scientifiques;
}
public function getMaxPages() : int {
$nbElemParPage = 20;
return ceil($this->gw->getNbScientifique()/$nbElemParPage);
}
}

@ -30,4 +30,8 @@ class Difficulte
public function getLibelle(): string{
return $this->libelle;
}
public function __toString() {
return $this->libelle;
}
}

@ -22,4 +22,9 @@ class Sexe
{
return $this->libelle;
}
public function __toString()
{
return $this->libelle;
}
}

@ -22,4 +22,9 @@ class Thematique
{
return $this->libelle;
}
public function __toString()
{
return $this->libelle;
}
}

@ -17,7 +17,9 @@
<p align="right"><a href="logout">{{dVue.pseudo}}</a></p>
<br><br><br><br>
<center>
<a href="ajouterScientifiques">Ajouter Scientifiques</a>
<a href="admin/ajouterScientifiques">Ajouter Scientifiques</a>
<br>
<a href="admin/listeScientifiques">Lister les scientifiques</a>
</center>

@ -2,7 +2,7 @@
<html lang="fr">
<head>
<meta charset="UTF-8">
<title>Créer une partie</title>
<title>Ajouter un(e) scientifique</title>
<link rel="stylesheet" href="css/bootstrap.min.css">
<style>
p,

@ -0,0 +1,46 @@
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="stylesheet" href="css/bootstrap.min.css">
<style>
body {
margin: 10px;
}
</style>
<title>Liste des scientifiques</title>
</head>
<body>
<h1>Voici la liste des scientifiques dans la base de données :</h1>
<p align="right"><a href="logout">{{dVue.pseudo}}</a></p>
<br><br><br><br>
<center>
<a href="../ajouterScientifiques">Ajouter un(e) scientifique</a>
{% for scientifique in dVue.listeScientifiques %}
<div>
<h2>{{ scientifique.getNom() }} {{ scientifique.getPrenom() }}</h2>
<p>Sexe : {{ scientifique.getSexe() }}</p>
<p>Né(e) le {{ scientifique.getDateNess() }}</p>
<p>Thematique : {{ scientifique.getThematique() }}</p>
<p>Difficulté à trouver : {{ scientifique.getDifficulte() }}</p>
<a href='../ajouterScientifiques?id={{scientifique.getId()}}'>Modifier</a>
</div>
<br>
<br>
{% endfor %}
<div>
<a href="{{ dVue.pagePrec }}"><</a>
<a href="1">1</a>
<p>{{ dVue.page }}</p>
<a href="{{ dVue.pageMax }}">1</a>
<a href="{{ dVue.pageSuiv }}">></a>
</div>
</center>
<script src="js/bootstrap.min.js"></script>
</body>
</html>
Loading…
Cancel
Save