Skip to content
Snippets Groups Projects
Commit 8f6e1583 authored by Sofiane Lasri's avatar Sofiane Lasri
Browse files

TP4 ex1 terminé.

parent 99e11e13
No related branches found
No related tags found
No related merge requests found
<?php
class Connexion
{
// les attributs static caractéristiques de la connexion
static private $hostname = 'localhost';
static private $database = 'iut-dev';
static private $login = 'iut-dev-user';
static private $password = 'p73i74KAV8lami2iyIpehE5ozic8GA';
static private $tabUTF8 = array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8");
// l'attribut static qui matérialisera la connexion
static private $pdo;
// le getter public de cet attribut
static public function pdo()
{
return self::$pdo;
}
// la fonction static de connexion qui initialise $pdo et lance la tentative de connexion
static public function connect()
{
$h = self::$hostname;
$d = self::$database;
$l = self::$login;
$p = self::$password;
$t = self::$tabUTF8;
try {
self::$pdo = new PDO("mysql:host=$h;dbname=$d", $l, $p, $t);
self::$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
echo "erreur de connexion : " . $e->getMessage() . "<br>";
}
}
}
?>
<?php
require_once("modele/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=\"routeur.php?controleur=controleurAuteur&action=lireAuteur&numAuteur=$numAuteur\"> détails </a>";
$tableauAffichage[] = "<div class='ligne'><div>Auteur $prenom $nom</div><div> $lienDetails</div></div>";
}
include("vue/debut.php");
include("vue/menu.html");
include("vue/lesAuteurs.php");
include("vue/fin.html");
}
public static function lireAuteur() {
$titre = "un auteur";
$numAuteur = $_GET["numAuteur"];
$auteur = Auteur::getAuteurByNum($numAuteur);
include("vue/debut.php");
include("vue/menu.html");
include("vue/unAuteur.php");
include("vue/fin.html");
}
}
?>
.ligne {
display:flex;
flex-direction: row;
justify-content: space-between;
margin-top:10px;
margin-left:5%;
width:50%;
}
nav {
margin:10px;
padding:5px;
}
<?php
/**
*
*/
class Adherent
{
private string $login;
private string $mdp;
private string $nomAdherent;
private string $prenomAdherent;
private string $email;
private DateTime $dateAdhesion;
private int $numCategorie;
/**
* @return string
*/
public function getLogin(): string
{
return $this->login;
}
/**
* @param string $login
*/
public function setLogin(string $login): void
{
$this->login = $login;
}
/**
* @return string
*/
public function getMdp(): string
{
return $this->mdp;
}
/**
* @param string $mdp
*/
public function setMdp(string $mdp): void
{
$this->mdp = $mdp;
}
/**
* @return string
*/
public function getNomAdherent(): string
{
return $this->nomAdherent;
}
/**
* @param string $nomAdherent
*/
public function setNomAdherent(string $nomAdherent): void
{
$this->nomAdherent = $nomAdherent;
}
/**
* @return string
*/
public function getPrenomAdherent(): string
{
return $this->prenomAdherent;
}
/**
* @param string $prenomAdherent
*/
public function setPrenomAdherent(string $prenomAdherent): void
{
$this->prenomAdherent = $prenomAdherent;
}
/**
* @return string
*/
public function getEmail(): string
{
return $this->email;
}
/**
* @param string $email
*/
public function setEmail(string $email): void
{
$this->email = $email;
}
/**
* @return DateTime
*/
public function getDateAdhesion(): DateTime
{
return $this->dateAdhesion;
}
/**
* @param DateTime $dateAdhesion
*/
public function setDateAdhesion(DateTime $dateAdhesion): void
{
$this->dateAdhesion = $dateAdhesion;
}
/**
* @return int
*/
public function getNumCategorie(): int
{
return $this->numCategorie;
}
/**
* @param int $numCategorie
*/
public function setNumCategorie(int $numCategorie): void
{
$this->numCategorie = $numCategorie;
}
/**
* @return void
*/
public function afficher(){
echo "<p>" . $this->prenomAdherent . " " . $this->nomAdherent . " a rejoint le "
.$this->dateAdhesion->format('Y-m-d H:i:s');
}
}
\ No newline at end of file
<?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 = Connexion::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 = Connexion::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();
}
}
}
?>
<?php
/**
*
*/
class Categorie
{
private int $numCategorie;
private string $libelle;
private int $nbLivresAutorises;
/**
* @return int
*/
public function getNumCategorie(): int
{
return $this->numCategorie;
}
/**
* @param int $numCategorie
*/
public function setNumCategorie(int $numCategorie): void
{
$this->numCategorie = $numCategorie;
}
/**
* @return string
*/
public function getLibelle(): string
{
return $this->libelle;
}
/**
* @param string $libelle
*/
public function setLibelle(string $libelle): void
{
$this->libelle = $libelle;
}
/**
* @return int
*/
public function getNbLivresAutorises(): int
{
return $this->nbLivresAutorises;
}
/**
* @param int $nbLivresAutorises
*/
public function setNbLivresAutorises(int $nbLivresAutorises): void
{
$this->nbLivresAutorises = $nbLivresAutorises;
}
/**
* @return void
*/
public function afficher(): void{
echo "<p>Le livre" . $this->libelle . " est autorisé " . $this->nbLivresAutorises . " fois.</p>";
}
}
\ No newline at end of file
<?php
class DateEmprunt
{
private int $numDateEmprunt;
private DateTime $dateEmrpunt;
/**
* @return int
*/
public function getNumDateEmprunt(): int
{
return $this->numDateEmprunt;
}
/**
* @param int $numDateEmprunt
*/
public function setNumDateEmprunt(int $numDateEmprunt): void
{
$this->numDateEmprunt = $numDateEmprunt;
}
/**
* @return DateTime
*/
public function getDateEmrpunt(): DateTime
{
return $this->dateEmrpunt;
}
/**
* @param DateTime $dateEmrpunt
*/
public function setDateEmrpunt(DateTime $dateEmrpunt): void
{
$this->dateEmrpunt = $dateEmrpunt;
}
}
\ No newline at end of file
<?php
class Genre
{
private int $numGenre;
private string $intitule;
/**
* @return int
*/
public function getNumGenre(): int
{
return $this->numGenre;
}
/**
* @param int $numGenre
*/
public function setNumGenre(int $numGenre): void
{
$this->numGenre = $numGenre;
}
/**
* @return string
*/
public function getIntitule(): string
{
return $this->intitule;
}
/**
* @param string $intitule
*/
public function setIntitule(string $intitule): void
{
$this->intitule = $intitule;
}
}
\ No newline at end of file
<?php
class Livre
{
private int $nulLibre;
private string $titre;
private int $anneeParution;
private int $numGenre;
/**
* @return int
*/
public function getNulLibre(): int
{
return $this->nulLibre;
}
/**
* @param int $nulLibre
*/
public function setNulLibre(int $nulLibre): void
{
$this->nulLibre = $nulLibre;
}
/**
* @return string
*/
public function getTitre(): string
{
return $this->titre;
}
/**
* @param string $titre
*/
public function setTitre(string $titre): void
{
$this->titre = $titre;
}
/**
* @return int
*/
public function getAnneeParution(): int
{
return $this->anneeParution;
}
/**
* @param int $anneeParution
*/
public function setAnneeParution(int $anneeParution): void
{
$this->anneeParution = $anneeParution;
}
/**
* @return int
*/
public function getNumGenre(): int
{
return $this->numGenre;
}
/**
* @param int $numGenre
*/
public function setNumGenre(int $numGenre): void
{
$this->numGenre = $numGenre;
}
}
\ No newline at end of file
<?php
class Nationalite
{
private int $numNationalite;
private string $pays;
private string $abrege;
/**
* @return int
*/
public function getNumNationalite(): int
{
return $this->numNationalite;
}
/**
* @param int $numNationalite
*/
public function setNumNationalite(int $numNationalite): void
{
$this->numNationalite = $numNationalite;
}
}
\ No newline at end of file
<?php
require_once("config/connexion.php");
Connexion::connect();
require_once("controleur/controleurAuteur.php");
$action = "lireAuteurs";
if (isset($_GET["action"]) && in_array($_GET["action"],get_class_methods('ControleurAuteur'))) {
$action = $_GET["action"];
}
controleurAuteur::$action();
?>
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="utf-8">
<title><?php echo $titre; ?></title>
<link rel="stylesheet" href="css/styles.css">
</head>
<body>
</body>
</html>
<?php
foreach ($tableauAffichage as $ligne) {
echo $ligne;
}
?>
<nav>
<a href="routeur.php?action=lireAuteurs">tous les auteurs</a>
</nav>
<?php
$auteur->afficher();
?>
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment