diff --git a/TP4/ex1/controller/ControleurAuteur.php b/TP4/ex1/controller/ControleurAuteur.php index e787d51151446ee34ff8a9e665f6eb31b9153205..d0b28fe2515acd84b64b2e80480bb8992a4d1cc1 100644 --- a/TP4/ex1/controller/ControleurAuteur.php +++ b/TP4/ex1/controller/ControleurAuteur.php @@ -3,23 +3,10 @@ require_once("models/Auteur.php"); class ControleurAuteur { - public static function lireAuteurs() { - $titre = "les auteurs"; - $tableau = Auteur::getAllAuteurs(); - $tableauAffichage = array(); - foreach ($tableau as $auteur) { - $numAuteur = $auteur->getNumAuteur(); - $nom = $auteur->getNom(); - $prenom = $auteur->getPrenom(); - $lienDetails = "<a class='bouton' href=\"index.php?controller=controleurAuteur&action=lireAuteur&numAuteur=$numAuteur\"> détails </a>"; - $tableauAffichage[] = "<div class='ligne'><div>Auteur $prenom $nom</div><div> $lienDetails</div></div>"; - } - include("resources/views/debut.php"); - include("resources/views/menu.html"); - include("resources/views/lesAuteurs.php"); - include("resources/views/fin.html"); + $auteurs = Auteur::getAllAuteurs(); + return view('auteurs.liste-auteurs', ['auteurs' => $auteurs]); } public static function lireAuteur() diff --git a/TP4/ex1/helpers/views.php b/TP4/ex1/helpers/views.php index f5ecd7ce23c37ffd99e86d8b6ee8f2df329a1289..b22aefb193d2e419aa713d3c047dbd0ba159e7bf 100644 --- a/TP4/ex1/helpers/views.php +++ b/TP4/ex1/helpers/views.php @@ -1,5 +1,5 @@ <?php -function view(string $viewName, array $args): bool +function view(string $viewName, array $args = []): bool { $viewPathParts = explode(".", $viewName); $viewPath = ""; diff --git a/TP4/ex1/models/Auteur.php b/TP4/ex1/models/Auteur.php index 87e37b311bb6e53c09c7cbe2e96569dba51b9229..90b33d2cf362ff025b2b7976c82f1951643664a8 100644 --- a/TP4/ex1/models/Auteur.php +++ b/TP4/ex1/models/Auteur.php @@ -1,71 +1,113 @@ <?php -class Auteur { - -// attributs - private $numAuteur; - private $nom; - private $prenom; - private $anneeNaissance; - - // getter - public function getNumAuteur() {return $this->numAuteur;} - public function getNom() {return $this->nom;} - public function getPrenom() {return $this->prenom;} - public function getAnneeNaissance() {return $this->anneeNaissance;} - - // setter - public function setNumAuteur($nu) {$this->numAuteur = $nu;} - public function setNom($n) {$this->nom = $n;} - public function setPrenom($p) {$this->prenom = $p;} - public function setAnneeNaissance($a) {$this->anneeNaissance = $a;} - - // un constructeur - public function __construct($nu = NULL, $n = NULL, $p = NULL, $a = NULL) { - if (!is_null($nu)) { - $this->numAuteur = $nu; - $this->nom = $n; - $this->prenom = $p; - $this->anneeNaissance = $a; - } - } - - // une methode d'affichage. - public function afficher() { - echo "<p>auteur $this->prenom $this->nom, né(e) en $this->anneeNaissance </p>"; - } - - // méthode static qui retourne les auteurs en un tableau d'objets - public static function getAllAuteurs() { - // écriture de la requête - $requete = "SELECT * FROM Auteur;"; - // envoi de la requête et stockage de la réponse - $resultat = Database::pdo()->query($requete); - // traitement de la réponse - $resultat->setFetchmode(PDO::FETCH_CLASS,'Auteur'); - $tableau = $resultat->fetchAll(); - return $tableau; - } - - // méthode static qui retourne un auteur identifié par son numAuteur - public static function getAuteurByNum($numAuteur) { - // écriture de la requête - $requetePreparee = "SELECT * FROM Auteur WHERE numAuteur = :num_tag;"; - $req_prep = Database::pdo()->prepare($requetePreparee); - // le tableau des valeurs - $valeurs = array("num_tag" => $numAuteur); - try { - // envoi de la requête - $req_prep->execute($valeurs); - // traitement de la réponse - $req_prep->setFetchmode(PDO::FETCH_CLASS,'Auteur'); - // récupération de l'auteur - $a = $req_prep->fetch(); - // retour - return $a; - } catch(PDEException $e) { - echo $e->getMessage(); - } - } + +class Auteur +{ + // attributs + private int $numAuteur; + private string $nom; + private string $prenom; + private ?int $anneeNaissance; + + // getter + + public function __construct($nu = NULL, $n = NULL, $p = NULL, $a = NULL) + { + if (!is_null($nu)) { + $this->numAuteur = $nu; + $this->nom = $n; + $this->prenom = $p; + $this->anneeNaissance = $a; + } + } + + public static function getAllAuteurs() + { + // écriture de la requête + $requete = "SELECT * FROM Auteur;"; + // envoi de la requête et stockage de la réponse + $resultat = Database::pdo()->query($requete); + // traitement de la réponse + $resultat->setFetchmode(PDO::FETCH_CLASS, 'Auteur'); + $tableau = $resultat->fetchAll(); + return $tableau; + } + + public static function getAuteurByNum($numAuteur) + { + // écriture de la requête + $requetePreparee = "SELECT * FROM Auteur WHERE numAuteur = :num_tag;"; + $req_prep = Database::pdo()->prepare($requetePreparee); + // le tableau des valeurs + $valeurs = array("num_tag" => $numAuteur); + try { + // envoi de la requête + $req_prep->execute($valeurs); + // traitement de la réponse + $req_prep->setFetchmode(PDO::FETCH_CLASS, 'Auteur'); + // récupération de l'auteur + $a = $req_prep->fetch(); + // retour + return $a; + } catch (PDEException $e) { + echo $e->getMessage(); + } + } + + public function getNumAuteur() + { + return $this->numAuteur; + } + + // setter + + public function setNumAuteur($nu) + { + $this->numAuteur = $nu; + } + + public function getNom() + { + return $this->nom; + } + + public function setNom($n) + { + $this->nom = $n; + } + + public function getPrenom() + { + return $this->prenom; + } + + // un constructeur + + public function setPrenom($p) + { + $this->prenom = $p; + } + + // une methode d'affichage. + + public function getAnneeNaissance() + { + return $this->anneeNaissance; + } + + // méthode static qui retourne les auteurs en un tableau d'objets + + public function setAnneeNaissance($a) + { + $this->anneeNaissance = $a; + } + + // méthode static qui retourne un auteur identifié par son numAuteur + + public function afficher() + { + echo "<p>auteur $this->prenom $this->nom, né(e) en $this->anneeNaissance </p>"; + } } + ?> diff --git a/TP4/ex1/resources/views/auteurs/liste-auteurs.php b/TP4/ex1/resources/views/auteurs/liste-auteurs.php new file mode 100644 index 0000000000000000000000000000000000000000..a756b37c9bbfeca58db03a06f88261b47d3af77b --- /dev/null +++ b/TP4/ex1/resources/views/auteurs/liste-auteurs.php @@ -0,0 +1,29 @@ +<html lang="fr"> +<head> + <meta charset="utf-8"> + <title>Liste des auteurs</title> + <?=view('layouts.head')?> +</head> +<body class=""> + <div class="container"> + <h1>Liste de tous les auteurs</h1> + <p>Voici la liste de tous les auteurs</p> + <div class="d-flex flex-wrap justify-content-between"> + <?php foreach ($auteurs as $auteur) { ?> + <div class="card mb-2" style="width: 18rem;"> + <div class="card-body"> + <h5 class="card-title"><?=$auteur->getPrenom()?> <?=$auteur->getNom()?></h5> + <p class="card-text">ID: <?=$auteur->getNumAuteur()?><br> + Date de naissance: <?=$auteur->getAnneeNaissance()?></p> + <a class="btn btn-primary" + href="index.php?controller=controleurAuteur&action=lireAuteur&numAuteur=<?=$auteur->getNumAuteur()?>"> + Lire les détails + </a> + </div> + </div> + <?php } ?> + </div> + </div> + <?=view('layouts.footer')?> +</body> +</html> \ No newline at end of file diff --git a/TP4/ex1/resources/views/layouts/footer.php b/TP4/ex1/resources/views/layouts/footer.php new file mode 100644 index 0000000000000000000000000000000000000000..102324d89fcfc0b9adb4de01b1b1271308e64c0e --- /dev/null +++ b/TP4/ex1/resources/views/layouts/footer.php @@ -0,0 +1,2 @@ +<script src="https://cdn.jsdelivr.net/npm/jquery@3.5.1/dist/jquery.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous"></script> +<script src="https://cdn.jsdelivr.net/npm/bootstrap@4.6.2/dist/js/bootstrap.bundle.min.js" integrity="sha384-Fy6S3B9q64WdZWQUiU+q4/2Lc9npb8tCaSX9FK7E8HnRr0Jz8D6OP9dO5Vg3Q9ct" crossorigin="anonymous"></script> \ No newline at end of file diff --git a/TP4/ex1/resources/views/layouts/head.php b/TP4/ex1/resources/views/layouts/head.php new file mode 100644 index 0000000000000000000000000000000000000000..326e865e25d4567e839f864c6f76718653f6d58a --- /dev/null +++ b/TP4/ex1/resources/views/layouts/head.php @@ -0,0 +1 @@ +<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.2/dist/css/bootstrap.min.css" integrity="sha384-xOolHFLEh07PJGoPkLv1IbcEPTNtaed2xpHsD9ESMhqIYd0nLMwNLD69Npy4HI+N" crossorigin="anonymous"> \ No newline at end of file