diff --git a/.idea/sqldialects.xml b/.idea/sqldialects.xml index c5a247dd68a051c09761c764cebdd70e7e2381b9..63772a38dd7db38163dcbc79f16b90062e3e51d0 100644 --- a/.idea/sqldialects.xml +++ b/.idea/sqldialects.xml @@ -1,7 +1,6 @@ <?xml version="1.0" encoding="UTF-8"?> <project version="4"> <component name="SqlDialectMappings"> - <file url="file://$PROJECT_DIR$/TP2/ex4/conn.php" dialect="GenericSQL" /> <file url="PROJECT" dialect="MariaDB" /> </component> </project> \ No newline at end of file diff --git a/README.md b/README.md deleted file mode 100644 index 4e958d2e3bae1e38d16f613ecbbb53e022e55ac8..0000000000000000000000000000000000000000 --- a/README.md +++ /dev/null @@ -1,29 +0,0 @@ -# TP-PHP-LPPRISM - - - -## Information pour M.Gagné -Je suis désolé, mais j'ai vraiment du mal avec votre façon de faire. Les pratiques réalisées sur le TP5 ne sont pas -bonnes pour plusieurs raisons. - -**Premièrement**, même si je comprends bien que créer plusieurs contrôleurs est rébarbatif, et qu'il peut être intéressant -de toute centralisé comme nous l'avions fait avec les vues, ici ce n'est pas une bonne idée. Le problème étant que les -tables gérées par les modèles n'ont pas les mêmes noms de méthodes, ni de propriétés, il serait difficile de créer un -contrôleur unique pour chaque modèle sans devoir implémenter du code spécifique. - -Bien sûr, nous pourrions toujours les renommer en un nom plus général, me diriez-vous. Ainsi on règlerait le problème des noms de méthodes -comme `getAllAuteurs()`. Cela est d'ailleurs compatible avec les pages individuelles. Mais cela ne corrigera pas le problème du nom des propriétés. - -En effet, si pour un livre nous allons utiliser son année de parution dans sa description, pour un auteur nous allons plutôt -utiliser son année de naissance. Même en supprimant les descriptions superflues que j'ai ajouté aux liens, il reste la -question de pouvoir récupérer l'identifiant unique de chaque objet. Encore une fois, les noms sont différents. - -Nous pourrions encore et toujours trouver une solution, mais cela ne fera que contourner le problème qui est que -centraliser tous les contrôleurs de ces contrôleurs, en sachant que nous n'avons qu'une seule vue, n'est pas une bonne -idée. - -**Nous en venons au deuxième problème**. Avoir centralisé les vues est une très bonne idée. Cependant, cela signife que -leur contenu doit être géré dans les contrôleurs. Cela ne devrait pas poser de problème, sauf si nous avons décidé de -centraliser aussi. Pour palier à ce problème, il faudrait alors revoir la manières dont sont créés les modèles. Je -suppose qu'il s'agit là du sujet des prochains TP. - \ No newline at end of file diff --git a/TP1/TP1_web.pdf b/TP1/TP1_web.pdf deleted file mode 100644 index 1a9e73a1b2a21e338b1d10634d610d6901e8fee5..0000000000000000000000000000000000000000 Binary files a/TP1/TP1_web.pdf and /dev/null differ diff --git a/TP1/ex1.php b/TP1/ex1.php deleted file mode 100644 index 788fef0d4211e746a1348d46ca00da18869383f4..0000000000000000000000000000000000000000 --- a/TP1/ex1.php +++ /dev/null @@ -1,2 +0,0 @@ -<?php -echo "Hello world!"; \ No newline at end of file diff --git a/TP1/ex2.php b/TP1/ex2.php deleted file mode 100644 index ad10e1139b387ded27ff1cee7027f2da2b52fec8..0000000000000000000000000000000000000000 --- a/TP1/ex2.php +++ /dev/null @@ -1,3 +0,0 @@ -<?php -$today = date('H:i:s, d-m-Y'); -echo "Nous sommes le: " . $today; \ No newline at end of file diff --git a/TP1/ex3.php b/TP1/ex3.php deleted file mode 100644 index da73702cb3e19def4094602277e399735e4c1d87..0000000000000000000000000000000000000000 --- a/TP1/ex3.php +++ /dev/null @@ -1,2 +0,0 @@ -<?php -var_dump(getdate()); \ No newline at end of file diff --git a/TP1/ex4.php b/TP1/ex4.php deleted file mode 100644 index 2fb0b1871d1029aca3cc6f57d4a53d5925a04c92..0000000000000000000000000000000000000000 --- a/TP1/ex4.php +++ /dev/null @@ -1,40 +0,0 @@ -<!DOCTYPE html> -<html lang="fr"> - <head> - <meta charset="utf-8"> - <title>TP1 - ex4</title> - <link rel="icon" type="image/png" href="iconPHP.png"> - </head> - <body> - <h2>Palmarès de la ligue des champions</h2> - <?php - $palmares = array( - 2022 => "Real Madrid", 2021 => "Chelsea", 2020 => "Bayern Munich", - 2019 => "Liverpool", 2018 => "Real Madrid", 2017 => "Real Madrid", - 2016 => "Real Madrid", 2015 => "Barcelone", 2014 => "Real Madrid", - 2013 => "Bayern Munich", 2012 => "Chelsea", 2011 => "Barcelone", - 2010 => "Inter Milan", 2009 => "Barcelone", 2008 => "Manchester United", - 2007 => "AC Milan", 2006 => "Barcelone", 2005 => "Liverpool", - 2004 => "Porto", 2003 => "AC Milan", 2002 => "Real Madrid", - 2001 => "Bayern Munich", 2000 => "Real Madrid" - ); - echo "<pre>"; - print_r($palmares); - echo "</pre>"; - - $vainqueurs = array(); - foreach ($palmares as $personne){ - if(!isset($vainqueurs[$personne])){ - $vainqueurs[$personne] = 1; - }else{ - $vainqueurs[$personne]++; - } - } - ksort($vainqueurs); - echo "<h2>Vainqueurs triés</h2>"; - echo "<pre>"; - print_r($vainqueurs); - echo "</pre>"; - ?> - </body> -</html> diff --git a/TP1/ex5a.php b/TP1/ex5a.php deleted file mode 100644 index b877e29ba5e832b519e87e766b0867f5e02b0cbb..0000000000000000000000000000000000000000 --- a/TP1/ex5a.php +++ /dev/null @@ -1,6 +0,0 @@ -<?php -$capital = array(10000); -for ($i=0; $i<10; $i++){ - echo "<br>$i: " . $capital[$i]; - $capital[$i+1] = floor($capital[$i] * 1.05); -} \ No newline at end of file diff --git a/TP1/ex5b.php b/TP1/ex5b.php deleted file mode 100644 index 073c1b36a405b891f33fd2c06b39ebecfa565434..0000000000000000000000000000000000000000 --- a/TP1/ex5b.php +++ /dev/null @@ -1,18 +0,0 @@ -<?php -$atteindre = 18000; -$init = 10000; -$taux = 1.05; - -$total = $init; -$nbAnnees = 0; -while($total < $atteindre){ - $total *= $taux; - $nbAnnees++; -} -?> -<h1>Dépassement d'un seuil donné</h1> -<p>Seuil à atteindre : <?=$atteindre?> €</p> -<p>Captial Intial : <?=$init?> €</p> -<p>Taux d'intérêt : <?php echo ($taux - 1) * 100; ?> %</p> - -<p>Capital en début d'année <?=$nbAnnees?> : <?=$total?> €</p> diff --git a/TP1/ex5c.php b/TP1/ex5c.php deleted file mode 100644 index ddbf58aac3c845c1f0f9c0ca670d368bc0f4bb2a..0000000000000000000000000000000000000000 --- a/TP1/ex5c.php +++ /dev/null @@ -1,30 +0,0 @@ -<?php -if(isset($_GET['seuil'])){ - $atteindre = $_GET['seuil']; -}else{ - $atteindre = 18000; -} -if(isset($_GET['capitalInitial'])){ - $init = $_GET['capitalInitial']; -}else{ - $init = 10000; -} -if(isset($_GET['taux'])){ - $taux = $_GET['taux']/100 + 1; -}else{ - $taux = 1.05; -} - -$total = $init; -$nbAnnees = 0; -while($total < $atteindre){ - $total *= $taux; - $nbAnnees++; -} -?> -<h1>Dépassement d'un seuil donné</h1> -<p>Seuil à atteindre : <?=$atteindre?> €</p> -<p>Captial Intial : <?=$init?> €</p> -<p>Taux d'intérêt : <?php echo ($taux - 1) * 100; ?> %</p> - -<p>Capital en début d'année <?=$nbAnnees?> : <?=$total?> €</p> \ No newline at end of file diff --git a/TP1/ex5d.php b/TP1/ex5d.php deleted file mode 100644 index 12c0ac3201a7a139c6c4c743052d05484d1ce76e..0000000000000000000000000000000000000000 --- a/TP1/ex5d.php +++ /dev/null @@ -1,32 +0,0 @@ -<?php -if(isset($_GET['seuil'])){ - $atteindre = $_GET['seuil']; -}else{ - $atteindre = 18000; -} -if(isset($_GET['capitalInitial'])){ - $init = $_GET['capitalInitial']; -}else{ - $init = 10000; -} -if(isset($_GET['targetYears'])){ - $targetYears = $_GET['targetYears']; -}else{ - $targetYears = 10; -} - -$taux = ($atteindre - $init) / $targetYears; - -$total = $init; -$nbAnnees = 0; -while($total < $atteindre){ - $total *= $taux; - $nbAnnees++; -} -?> -<h1>Dépassement d'un seuil donné</h1> -<p>Seuil à atteindre : <?=$atteindre?> €</p> -<p>Captial Intial : <?=$init?> €</p> -<p>Taux d'intérêt pour <?=$targetYears?> année(s) : <?php echo ($taux - 1) * 100; ?> %</p> - -<p>Capital en début d'année <?=$nbAnnees?> : <?=$total?> €</p> \ No newline at end of file diff --git a/TP1/ex6.php b/TP1/ex6.php deleted file mode 100644 index ad8785a3824e4ef5564d7e0cd3a8897a6adb82c9..0000000000000000000000000000000000000000 --- a/TP1/ex6.php +++ /dev/null @@ -1,17 +0,0 @@ -<h1>Affichage de $_GET</h1> -<?php -echo "<pre>"; print_r($_GET); echo "</pre>"; -?> - -<h1>Affichage des index de $_GET</h1> -<?php -echo "<pre>"; print_r(array_keys($_GET)); echo "</pre>"; - -echo "<h1>Détection des clés prenom et nom</Affi></h1>"; -if(array_key_exists("prenom", $_GET)){ - echo "Prénom: " . $_GET['prenom']; -} -if(array_key_exists("nom", $_GET)){ - echo "<br>Nom: " . $_GET['nom']; -} -?> diff --git a/TP2/TP2_web.pdf b/TP2/TP2_web.pdf deleted file mode 100644 index 38c2fb460725723b4f79af0ef8a7fd9c50066d9e..0000000000000000000000000000000000000000 Binary files a/TP2/TP2_web.pdf and /dev/null differ diff --git a/TP2/ex1/Auteur.php b/TP2/ex1/Auteur.php deleted file mode 100644 index 1a982b2820b45ee1793731adb2ce885bb07629fe..0000000000000000000000000000000000000000 --- a/TP2/ex1/Auteur.php +++ /dev/null @@ -1,116 +0,0 @@ -<?php - -class Auteur -{ - private int $numAuteur; - private string $nom; - private string $prenom; - private string $nationalite; - private int $anneeNaissance; - - /** - * @param int $numAuteur - * @param string|null $nom - * @param string|null $prenom - * @param string|null $nationalite - * @param int|null $anneeNaissance - */ - public function __construct(int $numAuteur, string $nom = null, string $prenom = null, string $nationalite = null, int $anneeNaissance = null) - { - $this->numAuteur = $numAuteur; - if($nom){ - $this->nom = $nom; - $this->prenom = $prenom; - $this->nationalite = $nationalite; - $this->anneeNaissance = $anneeNaissance; - } - } - - /** - * @return int - */ - public function getNumAuteur(): int - { - return $this->numAuteur; - } - - /** - * @param int $numAuteur - */ - public function setNumAuteur(int $numAuteur): void - { - $this->numAuteur = $numAuteur; - } - - /** - * @return string - */ - public function getNom(): string - { - return $this->nom; - } - - /** - * @param string $nom - */ - public function setNom(string $nom): void - { - $this->nom = $nom; - } - - /** - * @return string - */ - public function getPrenom(): string - { - return $this->prenom; - } - - /** - * @param string $prenom - */ - public function setPrenom(string $prenom): void - { - $this->prenom = $prenom; - } - - /** - * @return string - */ - public function getNationalite(): string - { - return $this->nationalite; - } - - /** - * @param string $nationalite - */ - public function setNationalite(string $nationalite): void - { - $this->nationalite = $nationalite; - } - - /** - * @return int - */ - public function getAnneeNaissance(): int - { - return $this->anneeNaissance; - } - - /** - * @param int $anneeNaissance - */ - public function setAnneeNaissance(int $anneeNaissance): void - { - $this->anneeNaissance = $anneeNaissance; - } - - /** - * @return void - */ - public function afficher(): void - { - echo "<p>Nom: " . $this->nom . " Prénom: " . $this->prenom . "</p>"; - } -} \ No newline at end of file diff --git a/TP2/ex1/testAuteur.php b/TP2/ex1/testAuteur.php deleted file mode 100644 index f157ec54cb50af83b8caa5ebe7d4d2a5bb878c16..0000000000000000000000000000000000000000 --- a/TP2/ex1/testAuteur.php +++ /dev/null @@ -1,8 +0,0 @@ -<?php -require "Auteur.php"; - -$aut1 = new Auteur(1); -$aut2 = new Auteur(2, "Clavier", "Christian", "France", 1969); - -$aut1->afficher(); -$aut2->afficher(); \ No newline at end of file diff --git a/TP2/ex4/Auteur.php b/TP2/ex4/Auteur.php deleted file mode 100644 index 6e13f1229e0c70bbef8839a937c9581bceccd042..0000000000000000000000000000000000000000 --- a/TP2/ex4/Auteur.php +++ /dev/null @@ -1,143 +0,0 @@ -<?php - -class Auteur -{ - private int $numAuteur; - private string $nom; - private string $prenom; - private string $nationalite; - private int $anneeNaissance; - - /** - * @param int $numAuteur - * @param string|null $nom - * @param string|null $prenom - * @param string|null $nationalite - * @param int|null $anneeNaissance - */ - public function __construct(int $numAuteur, string $nom = null, string $prenom = null, string $nationalite = null, int $anneeNaissance = null) - { - $this->numAuteur = $numAuteur; - if($nom){ - $this->nom = $nom; - $this->prenom = $prenom; - $this->nationalite = $nationalite; - $this->anneeNaissance = $anneeNaissance; - }else{ - $bdd = new Database; - $bdd->connect(); - $bdd = $bdd->pdo(); - $query = $bdd->prepare("SELECT * FROM auteur WHERE numAuteur = ?"); - $query->execute([$numAuteur]); - $data = $query->fetch(PDO::FETCH_ASSOC); - - $this->nom = $data['nom']; - $this->prenom = $data['prenom']; - $this->nationalite = $data['nationalite']; - $this->anneeNaissance = $data['anneeNaissance']; - } - } - - /** - * @return int - */ - public function getNumAuteur(): int - { - return $this->numAuteur; - } - - /** - * @param int $numAuteur - */ - public function setNumAuteur(int $numAuteur): void - { - $this->numAuteur = $numAuteur; - } - - /** - * @return string - */ - public function getNom(): string - { - return $this->nom; - } - - /** - * @param string $nom - */ - public function setNom(string $nom): void - { - $this->nom = $nom; - } - - /** - * @return string - */ - public function getPrenom(): string - { - return $this->prenom; - } - - /** - * @param string $prenom - */ - public function setPrenom(string $prenom): void - { - $this->prenom = $prenom; - } - - /** - * @return string - */ - public function getNationalite(): string - { - return $this->nationalite; - } - - /** - * @param string $nationalite - */ - public function setNationalite(string $nationalite): void - { - $this->nationalite = $nationalite; - } - - /** - * @return int - */ - public function getAnneeNaissance(): int - { - return $this->anneeNaissance; - } - - /** - * @param int $anneeNaissance - */ - public function setAnneeNaissance(int $anneeNaissance): void - { - $this->anneeNaissance = $anneeNaissance; - } - - /** - * @return void - */ - public function afficher(): void - { - echo "<p>Nom: " . $this->nom . " Prénom: " . $this->prenom . "</p>"; - } - - public static function getAllAuteurs(): array - { - $bdd = new Database; - $bdd->connect(); - $bdd = $bdd->pdo(); - $query = $bdd->query("SELECT * FROM auteur"); - $data = $query->fetchAll(PDO::FETCH_ASSOC); - - $array = array(); - foreach ($data as $auteur){ - $array[] = new Auteur($auteur['numAuteur']); - } - return $array; - } -} \ No newline at end of file diff --git a/TP2/ex4/conn.php b/TP2/ex4/conn.php deleted file mode 100644 index 9fb503a4a1a6cee0f502836bf945e12b62b05130..0000000000000000000000000000000000000000 --- a/TP2/ex4/conn.php +++ /dev/null @@ -1,38 +0,0 @@ -<?php - -class Connexion -{ - // attributs de la classe Connexion paramètres de connexion à la base - static private $hostname = 'localhost'; - static private $database = 'iut-dev'; - static private $login = 'iut-dev-user'; - static private $password = 'p73i74KAV8lami2iyIpehE5ozic8GA'; - - // attribut de la classe Connexion paramètres d'encodage - static private $tabUTF8 = array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"); - - // attribut de la classe Connexion qui recevra l'instance PDO - static private $pdo; - - // getter de pdo - static public function pdo() - { - return self::$pdo; - } - - // fonction 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 !"; - } - } -} \ No newline at end of file diff --git a/TP2/ex4/index.php b/TP2/ex4/index.php deleted file mode 100644 index d54d07ec5e74889a7ce7f696c32689664b86dd02..0000000000000000000000000000000000000000 --- a/TP2/ex4/index.php +++ /dev/null @@ -1,43 +0,0 @@ -<?php -ini_set('display_errors', 1); -ini_set('display_startup_errors', 1); -error_reporting(E_ALL); - -require "init.php"; -require "process.php"; -?> -<html lang="fr"> -<head> - <meta charset="utf-8"> - <title>Test formulaire</title> -</head> -<body> -<h1>Voici la liste des utilisateurs</h1> -<?php -foreach ($auteurs as $auteur){ - $auteur->afficher(); -} -?> - -<h1>Ajouter un auteur</h1> -<form action="" method="post"> - <label> - Nom - <input type="text" name="nom" placeholder="Nom" required> - </label> - <label> - Prénom - <input type="text" name="prenom" placeholder="Prenom" required> - </label> - <label> - Nationalité - <input type="text" name="nationalite" placeholder="Nationalité" required> - </label> - <label> - Année de naissance - <input type="number" name="anneeNaissance" placeholder="Année de naissance" required> - </label> - <button type="submit">Créer un auteur</button> -</form> -</body> -</html> \ No newline at end of file diff --git a/TP2/ex4/init.php b/TP2/ex4/init.php deleted file mode 100644 index 216b117e5a7e48fae0aa14ab6cc5cccdfb164df0..0000000000000000000000000000000000000000 --- a/TP2/ex4/init.php +++ /dev/null @@ -1,10 +0,0 @@ -<?php -require "conn.php"; -require "Auteur.php"; - -$createTable = "CREATE TABLE IF NOT EXISTS auteur ( `numAuteur` INT NOT NULL AUTO_INCREMENT , `nom` VARCHAR(64) NOT NULL , `prenom` VARCHAR(64) NOT NULL , `nationalite` VARCHAR(32) NOT NULL , `anneeNaissance` INT NOT NULL , PRIMARY KEY (`numAuteur`)) ENGINE = InnoDB;"; - -$bdd = new Database; -$bdd->connect(); -$bdd = $bdd->pdo(); -$query = $bdd->query($createTable); diff --git a/TP2/ex4/process.php b/TP2/ex4/process.php deleted file mode 100644 index 2f7148fabb0939f7d1e3136761e357dcc5c65262..0000000000000000000000000000000000000000 --- a/TP2/ex4/process.php +++ /dev/null @@ -1,16 +0,0 @@ -<?php -if(!empty($_POST)){ - if(!empty($_POST['nom']) && !empty($_POST['prenom']) && !empty($_POST['nationalite']) && !empty($_POST['anneeNaissance'])){ - $bdd = new Database; - $bdd->connect(); - $bdd = $bdd->pdo(); - $query = $bdd->prepare("INSERT INTO auteur (nom, prenom, nationalite, anneeNaissance) VALUE (?,?,?,?)"); - $query->execute([$_POST['nom'], $_POST['prenom'], $_POST['nationalite'], $_POST['anneeNaissance']]); - - echo "Auteur ajouté"; - }else{ - echo "Données manquantes pour ajouter l'auteur."; - } -} - -$auteurs = Auteur::getAllAuteurs(); \ No newline at end of file diff --git a/TP3/TP3_web.pdf b/TP3/TP3_web.pdf deleted file mode 100644 index cbf7b014bf14005df238f7e33afa46296335ff48..0000000000000000000000000000000000000000 Binary files a/TP3/TP3_web.pdf and /dev/null differ diff --git a/TP3/auteur.sql b/TP3/auteur.sql deleted file mode 100644 index d498d9e542d8dcb92f2ef304cca794a9fa3ec009..0000000000000000000000000000000000000000 --- a/TP3/auteur.sql +++ /dev/null @@ -1,72 +0,0 @@ --- phpMyAdmin SQL Dump --- version 5.0.4deb2+deb11u1 --- https://www.phpmyadmin.net/ --- --- Hôte : localhost:3306 --- Généré le : lun. 26 sep. 2022 à 08:41 --- Version du serveur : 10.5.15-MariaDB-0+deb11u1 --- Version de PHP : 7.4.30 - -SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; -START TRANSACTION; -SET time_zone = "+00:00"; - - -/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; -/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; -/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; -/*!40101 SET NAMES utf8mb4 */; - --- --- Base de données : `sgagne` --- - --- -------------------------------------------------------- - --- --- Structure de la table `auteur` --- - -CREATE TABLE `auteur` ( - `numAuteur` tinyint(4) NOT NULL, - `nom` varchar(50) NOT NULL, - `prenom` varchar(50) NOT NULL, - `nationalite` varchar(10) NOT NULL, - `anneeNaissance` int(11) NOT NULL -) ENGINE=InnoDB DEFAULT CHARSET=utf8; - --- --- Déchargement des données de la table `auteur` --- - -INSERT INTO `auteur` (`numAuteur`, `nom`, `prenom`, `nationalite`, `anneeNaissance`) VALUES -(1, 'Hugo', 'Victor', 'F', 1802), -(2, 'Thilliez', 'Franck', 'F', 1973), -(3, 'Twain', 'Mark', 'USA', 1835), -(4, 'Norek', 'Olivier', 'F', 1975), -(5, 'Werber', 'Bernard', 'F', 1842); - --- --- Index pour les tables déchargées --- - --- --- Index pour la table `auteur` --- -ALTER TABLE `auteur` - ADD PRIMARY KEY (`numAuteur`); - --- --- AUTO_INCREMENT pour les tables déchargées --- - --- --- AUTO_INCREMENT pour la table `auteur` --- -ALTER TABLE `auteur` - MODIFY `numAuteur` tinyint(4) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=19; -COMMIT; - -/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; -/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; -/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; diff --git a/TP3/conf/Connexion.php b/TP3/conf/Connexion.php deleted file mode 100644 index bde3c837c324109f3eb7904ddd348de703237d51..0000000000000000000000000000000000000000 --- a/TP3/conf/Connexion.php +++ /dev/null @@ -1,34 +0,0 @@ -<?php - -class Connexion { - - // attributs de la classe Connexion paramètres de connexion à la base - static private $hostname = 'localhost'; - static private $database = 'iut-dev'; - static private $login = 'iut-dev-user'; - static private $password = 'p73i74KAV8lami2iyIpehE5ozic8GA'; - - // attribut de la classe Connexion paramètres d'encodage - static private $tabUTF8 = array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"); - - // attribut de la classe Connexion qui recevra l'instance PDO - static private $pdo; - - // getter de pdo - static public function pdo() {return self::$pdo;} - - // fonction 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 !"; - } - } -} \ No newline at end of file diff --git a/TP3/controller/controllerVoiture.php b/TP3/controller/controllerVoiture.php deleted file mode 100644 index 36d7369b905f647ac4bbce6a9f8d26d74ffeafac..0000000000000000000000000000000000000000 --- a/TP3/controller/controllerVoiture.php +++ /dev/null @@ -1,7 +0,0 @@ -<?php - -$lesTutures = Voiture::getAllVoitures(); - -include "view/list.php"; - -?> \ No newline at end of file diff --git a/TP3/ex0.zip b/TP3/ex0.zip deleted file mode 100644 index e98884f4e7cd50ca5f3e8adc27a8cc34c0831b0d..0000000000000000000000000000000000000000 Binary files a/TP3/ex0.zip and /dev/null differ diff --git a/TP3/model/Voiture.php b/TP3/model/Voiture.php deleted file mode 100644 index da2c5a5d7eb16910feca336e37b96b67ed4fc175..0000000000000000000000000000000000000000 --- a/TP3/model/Voiture.php +++ /dev/null @@ -1,97 +0,0 @@ -<?php -class Voiture{ - private $marque; - private $couleur; - private $immatriculation; - - public function __construct($details) - { - if(isset($details['marque'])){ - $this->marque = $details['marque']; - }else{ - echo "Marque introuvable, \"iconnue\" sera spécifié."; - $this->marque = "inconnue"; - } - if(isset($details['couleur'])){ - $this->marque = $details['couleur']; - }else{ - echo "Couleur introuvable, \"iconnue\" sera spécifié."; - $this->couleur = "inconnue"; - } - if(isset($details['immatriculation'])){ - $this->marque = $details['immatriculation']; - }else{ - echo "Immatriculation introuvable, \"iconnue\" sera spécifié."; - $this->immatriculation = "inconnue"; - } - } - - public function getMarque() { - return $this->marque; - } - - public function setMarque($marque) { - $this->marque = $marque; - } - - public function getCouleur() { - return $this->couleur; - } - - public function setCouleur($couleur) { - $this->couleur = $couleur; - } - - public function getImmatriculation() { - return $this->immatriculation; - } - - public function setImmatriculation($immatriculation) { - $this->immatriculation = $immatriculation; - } - - public function afficher(){ - echo "La voiture ".$this->couleur." immatriculée ".$this->immatriculation." est de la marque ".$this->marque."."; - } - - public static function getAllVoitures(){ - $bdd = new Database; - $bdd->connect(); - $bdd = $bdd->pdo(); - $query = $bdd->query("SELECT * FROM voiture"); - return $query->fetchAll(PDO::FETCH_ASSOC); - } - - public static function rechercherParPlaque($plaque){ - $bdd = new Database; - $bdd->connect(); - $bdd = $bdd->pdo(); - $query = $bdd->prepare("SELECT * FROM voiture WHERE immatriculation=?"); - $query->execute([$plaque]); - return $query->fetch(PDO::FETCH_ASSOC); - } - - public static function deleteVoitureByImmat($plaque){ - $bdd = new Database; - $bdd->connect(); - $bdd = $bdd->pdo(); - $query = $bdd->prepare("DELETE FROM voiture WHERE immatriculation=?"); - $query->execute([$plaque]); - } - - public static function addVoiture($immat, $marque, $couleur){ - $bdd = new Database; - $bdd->connect(); - $bdd = $bdd->pdo(); - $query = $bdd->prepare("INSERT INTO `voiture` (`immatriculation`, `marque`, `couleur`) VALUES (?,?,?)"); - $query->execute([$immat, $marque, $couleur]); - } - - public static function updateVoiture($immat, $marque, $couleur){ - $bdd = new Database; - $bdd->connect(); - $bdd = $bdd->pdo(); - $query = $bdd->prepare("UPDATE `voiture` SET `marque` = ?, `couleur` = ? WHERE `immatriculation` = ?"); - $query->execute([$marque, $couleur, $immat]); - } -} \ No newline at end of file diff --git a/TP3/routeur.php b/TP3/routeur.php deleted file mode 100644 index 7fd8fec8b5f38477f3672dae55285377c6c3cef5..0000000000000000000000000000000000000000 --- a/TP3/routeur.php +++ /dev/null @@ -1,7 +0,0 @@ -<?php -require_once "conf/Connexion.php"; -require_once "model/Voiture.php"; -require_once "controller/controllerVoiture.php"; - - - diff --git a/TP3/view/list.php b/TP3/view/list.php deleted file mode 100644 index f2590b6383769b542bea9cd97319686f87caab19..0000000000000000000000000000000000000000 --- a/TP3/view/list.php +++ /dev/null @@ -1,52 +0,0 @@ -<!DOCTYPE html> -<html> -<head> - <meta charset='utf-8'> - <meta http-equiv='X-UA-Compatible' content='IE=edge'> - <title>Formulaire Création Voiture</title> - <meta name='viewport' content='width=device-width, initial-scale=1'> - <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.5.3/dist/css/bootstrap.min.css" integrity="sha384-TX8t27EcRE3e/ihU7zmQxVncDAy5uIKz4rEkgIXeMed4M0jlfIDPvg6uqKI2xXr2" crossorigin="anonymous"> - <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script> - <script src="https://cdn.jsdelivr.net/npm/bootstrap@4.5.3/dist/js/bootstrap.bundle.min.js" integrity="sha384-ho+j7jyWK8fNQe+A12Hb8AhRq26LrZ/JpcUGGOn+Y7RsweNrtN/tE3MoK7ZeZDyx" crossorigin="anonymous"></script> -</head> -<body class="bg-dark"> - - <div class="container mt-5 bg-light rounded p-2"> - <h1>Gestionnaire de véhicules</h1> - <p>Voici la liste des véhicules garés.</p> - - <table class="table"> - <thead class="thead-dark"> - <tr> - <th scope="col">Immatriculation</th> - <th scope="col">Marque</th> - <th scope="col">Couleur</th> - </tr> - </thead> - <tbody id="tableau"> - <!-- - <tr> - <th scope="row">1</th> - <td>Mark</td> - <td>Otto</td> - </tr> - --> - <?php - if(isset($lesTutures)){ - foreach($lesTutures as $tuture){ - echo ('<tr>\ - <th scope="row">'.$tuture["immatriculation"].'</th> - <td>'.$tuture["marque"].'</td> - <td>'.$tuture["couleur"].'</td> - - </tr>'); - } - } - - ?> - </tbody> - </table> - </div> -</body> -</html> - diff --git a/TP4/TP4_web.pdf b/TP4/TP4_web.pdf deleted file mode 100644 index 2a7886e29092e4e0ac8e696fc78083ba73e2e6cc..0000000000000000000000000000000000000000 Binary files a/TP4/TP4_web.pdf and /dev/null differ diff --git a/TP4/bibliotheque.sql b/TP4/bibliotheque.sql deleted file mode 100644 index 697d3c20f2eac759e55984df00719f2bf6924fc4..0000000000000000000000000000000000000000 --- a/TP4/bibliotheque.sql +++ /dev/null @@ -1,455 +0,0 @@ --- phpMyAdmin SQL Dump --- version 5.0.4deb2+deb11u1 --- https://www.phpmyadmin.net/ --- --- Hôte : localhost:3306 --- Généré le : Dim 02 oct. 2022 à 17:19 --- Version du serveur : 10.5.15-MariaDB-0+deb11u1 --- Version de PHP : 7.4.30 - -SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; -START TRANSACTION; -SET time_zone = "+00:00"; - - -/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; -/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; -/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; -/*!40101 SET NAMES utf8mb4 */; - --- --- Base de données : `sgagne` --- - --- -------------------------------------------------------- - --- --- Structure de la table `Adherent` --- - -CREATE TABLE `Adherent` ( - `login` varchar(50) CHARACTER SET utf8 NOT NULL, - `mdp` varchar(64) CHARACTER SET utf8 NOT NULL, - `nomAdherent` varchar(50) DEFAULT NULL, - `prenomAdherent` varchar(50) DEFAULT NULL, - `email` varchar(50) DEFAULT NULL, - `dateAdhesion` date DEFAULT NULL, - `numCategorie` int(11) NOT NULL -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; - --- --- Déchargement des données de la table `Adherent` --- - -INSERT INTO `Adherent` (`login`, `mdp`, `nomAdherent`, `prenomAdherent`, `email`, `dateAdhesion`, `numCategorie`) VALUES -('lafleche', '12345', 'SELLA', 'Philippe', 'philippe.sella@yopmail.com', '2022-10-05', 3), -('musclor', 'grrr', 'CHABAL', 'Sébastien', 'sebastien.chabal@yopmail.com', '2022-10-05', 2), -('rico', 'delprado', 'DI MECO', 'Eric', 'eric.di-meco@yopmail.com', '2022-10-09', 3), -('speedy', 'azerty', 'DUPONT', 'Antoine', 'antoine.dupont@yopmail.com', '2022-10-03', 1), -('theboss', 'jojo', 'MOSCATO', 'Vincent', 'vincent.moscato@yopmail.com', '2022-10-03', 1); - --- -------------------------------------------------------- - --- --- Structure de la table `Auteur` --- - -CREATE TABLE `Auteur` ( - `numAuteur` int(11) NOT NULL, - `nom` varchar(50) DEFAULT NULL, - `prenom` varchar(50) DEFAULT NULL, - `anneeNaissance` int(11) DEFAULT NULL -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; - --- --- Déchargement des données de la table `Auteur` --- - -INSERT INTO `Auteur` (`numAuteur`, `nom`, `prenom`, `anneeNaissance`) VALUES -(1, 'THILLIEZ', 'Franck', 1973), -(2, 'NOREK', 'Olivier', 1975), -(3, 'CORNWELL', 'Patricia', 1956), -(4, 'GARY', 'Romain', 1914), -(5, 'KLEIN', 'Etienne', 1958), -(6, 'HAWKING', 'Stephen', 1942), -(7, 'EINSTEIN', 'Albert', 1879), -(8, 'HELMSTETTER', 'Didier', 1953), -(9, 'DROUIN', 'Emilie', NULL), -(10, 'MORAND', 'Elodie', NULL), -(11, 'ZIDANE', 'Zinedine', 1972), -(12, 'MARX', 'Thierry', 1959), -(13, 'HAUMONT', 'Raphaël', 1978), -(14, 'HAMILTON', 'Gene', NULL), -(15, 'TURING', 'Alan', 1912); - --- -------------------------------------------------------- - --- --- Structure de la table `Categorie` --- - -CREATE TABLE `Categorie` ( - `numCategorie` int(11) NOT NULL, - `libelle` varchar(50) DEFAULT NULL, - `nbLivresAutorises` int(11) DEFAULT NULL -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; - --- --- Déchargement des données de la table `Categorie` --- - -INSERT INTO `Categorie` (`numCategorie`, `libelle`, `nbLivresAutorises`) VALUES -(1, 'basique', 2), -(2, 'régulier', 5), -(3, 'fervent', 8); - --- -------------------------------------------------------- - --- --- Structure de la table `DateEmprunt` --- - -CREATE TABLE `DateEmprunt` ( - `numDateEmprunt` int(11) NOT NULL, - `dateEmprunt` date NOT NULL -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; - --- --- Déchargement des données de la table `DateEmprunt` --- - -INSERT INTO `DateEmprunt` (`numDateEmprunt`, `dateEmprunt`) VALUES -(1, '2022-10-02'), -(2, '2022-10-03'), -(3, '2022-10-04'), -(4, '2022-10-05'); - --- -------------------------------------------------------- - --- --- Structure de la table `emprunte` --- - -CREATE TABLE `emprunte` ( - `numLivre` int(11) NOT NULL, - `login` varchar(50) CHARACTER SET utf8 NOT NULL, - `numDateEmprunt` int(11) NOT NULL -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; - --- --- Déchargement des données de la table `emprunte` --- - -INSERT INTO `emprunte` (`numLivre`, `login`, `numDateEmprunt`) VALUES -(1, 'rico', 1); - --- -------------------------------------------------------- - --- --- Structure de la table `estAuteurDe` --- - -CREATE TABLE `estAuteurDe` ( - `numAuteur` int(11) NOT NULL, - `numLivre` int(11) NOT NULL -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; - --- --- Déchargement des données de la table `estAuteurDe` --- - -INSERT INTO `estAuteurDe` (`numAuteur`, `numLivre`) VALUES -(1, 1), -(1, 2), -(3, 3), -(3, 4), -(3, 5), -(4, 6), -(4, 7), -(5, 10), -(5, 11), -(6, 9), -(7, 8), -(8, 12), -(9, 13), -(10, 13), -(11, 14), -(12, 15), -(13, 15), -(14, 16), -(15, 17); - --- -------------------------------------------------------- - --- --- Structure de la table `estDeNationalite` --- - -CREATE TABLE `estDeNationalite` ( - `numAuteur` int(11) NOT NULL, - `numNationalite` int(11) NOT NULL -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; - --- --- Déchargement des données de la table `estDeNationalite` --- - -INSERT INTO `estDeNationalite` (`numAuteur`, `numNationalite`) VALUES -(1, 1), -(2, 1), -(3, 2), -(4, 1), -(4, 5), -(5, 1), -(6, 4), -(7, 2), -(7, 6), -(8, 1), -(9, 1), -(10, 1), -(11, 1), -(12, 1), -(13, 1), -(14, 2), -(15, 1); - --- -------------------------------------------------------- - --- --- Structure de la table `Genre` --- - -CREATE TABLE `Genre` ( - `numGenre` int(11) NOT NULL, - `intitule` varchar(50) DEFAULT NULL -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; - --- --- Déchargement des données de la table `Genre` --- - -INSERT INTO `Genre` (`numGenre`, `intitule`) VALUES -(1, 'roman policier'), -(2, 'sciences'), -(3, 'jardinage'), -(4, 'tricot'), -(5, 'sport'), -(6, 'cuisine'), -(7, 'bricolage'), -(8, 'informatique'), -(9, 'roman'); - --- -------------------------------------------------------- - --- --- Structure de la table `Livre` --- - -CREATE TABLE `Livre` ( - `numLivre` int(11) NOT NULL, - `titre` varchar(50) DEFAULT NULL, - `anneeParution` int(11) DEFAULT NULL, - `numGenre` int(11) NOT NULL -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; - --- --- Déchargement des données de la table `Livre` --- - -INSERT INTO `Livre` (`numLivre`, `titre`, `anneeParution`, `numGenre`) VALUES -(1, 'Le syndrome E', 2010, 1), -(2, 'Sharko', 2017, 1), -(3, 'Postmortem', 1990, 1), -(4, 'Une peine d\'exception', 1993, 1), -(5, 'La séquence des corps', 1994, 1), -(6, 'Tulipe', 1946, 9), -(7, 'La promesse de l\'aube', 1960, 9), -(8, 'Conceptions scientifiques', 1952, 2), -(9, 'Une brève histoire du temps', 1988, 2), -(10, 'Les tactiques de Chronos', 2003, 2), -(11, 'Discours sur l\'origine de l\'univers', 2010, 2), -(12, 'Le potager du paresseux', 2019, 3), -(13, 'Tricoter ses chaussettes', 2021, 4), -(14, 'Sur un coup de tête', 2006, 5), -(15, 'L\'innovation aux fourneaux', 2016, 6), -(16, 'Le bricolage pour les nuls', 1998, 7), -(17, 'PHP pour les nuls', 2022, 8); - --- -------------------------------------------------------- - --- --- Structure de la table `Nationalite` --- - -CREATE TABLE `Nationalite` ( - `numNationalite` int(11) NOT NULL, - `pays` varchar(50) DEFAULT NULL, - `abrege` varchar(50) DEFAULT NULL -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; - --- --- Déchargement des données de la table `Nationalite` --- - -INSERT INTO `Nationalite` (`numNationalite`, `pays`, `abrege`) VALUES -(1, 'France', 'FRA'), -(2, 'Etats-Unis', 'USA'), -(3, 'Suède', 'SWE'), -(4, 'Royaume-Uni', 'GBR'), -(5, 'Russie', 'RUS'), -(6, 'Allemagne', 'DEU'); - --- -------------------------------------------------------- - --- --- Index pour les tables déchargées --- - --- --- Index pour la table `Adherent` --- -ALTER TABLE `Adherent` - ADD PRIMARY KEY (`login`), - ADD KEY `ctAd1` (`numCategorie`); - --- --- Index pour la table `Auteur` --- -ALTER TABLE `Auteur` - ADD PRIMARY KEY (`numAuteur`); - --- --- Index pour la table `Categorie` --- -ALTER TABLE `Categorie` - ADD PRIMARY KEY (`numCategorie`); - --- --- Index pour la table `DateEmprunt` --- -ALTER TABLE `DateEmprunt` - ADD PRIMARY KEY (`numDateEmprunt`); - --- --- Index pour la table `emprunte` --- -ALTER TABLE `emprunte` - ADD PRIMARY KEY (`numLivre`,`login`,`numDateEmprunt`), - ADD KEY `ctEmprunte2` (`login`), - ADD KEY `ctEmprunte3` (`numDateEmprunt`); - --- --- Index pour la table `estAuteurDe` --- -ALTER TABLE `estAuteurDe` - ADD PRIMARY KEY (`numAuteur`,`numLivre`), - ADD KEY `ctestAuteurDe2` (`numLivre`); - --- --- Index pour la table `estDeNationalite` --- -ALTER TABLE `estDeNationalite` - ADD PRIMARY KEY (`numAuteur`,`numNationalite`), - ADD KEY `ctEstDeNationalite2` (`numNationalite`); - --- --- Index pour la table `Genre` --- -ALTER TABLE `Genre` - ADD PRIMARY KEY (`numGenre`); - --- --- Index pour la table `Livre` --- -ALTER TABLE `Livre` - ADD PRIMARY KEY (`numLivre`), - ADD KEY `ctL1` (`numGenre`); - --- --- Index pour la table `Nationalite` --- -ALTER TABLE `Nationalite` - ADD PRIMARY KEY (`numNationalite`); - --- --- AUTO_INCREMENT pour les tables déchargées --- - --- --- AUTO_INCREMENT pour la table `Auteur` --- -ALTER TABLE `Auteur` - MODIFY `numAuteur` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=16; - --- --- AUTO_INCREMENT pour la table `Categorie` --- -ALTER TABLE `Categorie` - MODIFY `numCategorie` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=4; - --- --- AUTO_INCREMENT pour la table `DateEmprunt` --- -ALTER TABLE `DateEmprunt` - MODIFY `numDateEmprunt` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=5; - --- --- AUTO_INCREMENT pour la table `Genre` --- -ALTER TABLE `Genre` - MODIFY `numGenre` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=10; - --- --- AUTO_INCREMENT pour la table `Livre` --- -ALTER TABLE `Livre` - MODIFY `numLivre` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=18; - --- --- AUTO_INCREMENT pour la table `Nationalite` --- -ALTER TABLE `Nationalite` - MODIFY `numNationalite` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=7; - --- --- Contraintes pour les tables déchargées --- - --- --- Contraintes pour la table `Adherent` --- -ALTER TABLE `Adherent` - ADD CONSTRAINT `ctAd1` FOREIGN KEY (`numCategorie`) REFERENCES `Categorie` (`numCategorie`) ON DELETE CASCADE ON UPDATE CASCADE; - --- --- Contraintes pour la table `emprunte` --- -ALTER TABLE `emprunte` - ADD CONSTRAINT `ctEmprunte1` FOREIGN KEY (`numLivre`) REFERENCES `Livre` (`numLivre`) ON DELETE CASCADE ON UPDATE CASCADE, - ADD CONSTRAINT `ctEmprunte2` FOREIGN KEY (`login`) REFERENCES `Adherent` (`login`) ON DELETE CASCADE ON UPDATE CASCADE, - ADD CONSTRAINT `ctEmprunte3` FOREIGN KEY (`numDateEmprunt`) REFERENCES `DateEmprunt` (`numDateEmprunt`) ON DELETE CASCADE ON UPDATE CASCADE; - --- --- Contraintes pour la table `estAuteurDe` --- -ALTER TABLE `estAuteurDe` - ADD CONSTRAINT `ctestAuteurDe1` FOREIGN KEY (`numAuteur`) REFERENCES `Auteur` (`numAuteur`) ON DELETE CASCADE ON UPDATE CASCADE, - ADD CONSTRAINT `ctestAuteurDe2` FOREIGN KEY (`numLivre`) REFERENCES `Livre` (`numLivre`) ON DELETE CASCADE ON UPDATE CASCADE; - --- --- Contraintes pour la table `estDeNationalite` --- -ALTER TABLE `estDeNationalite` - ADD CONSTRAINT `ctEstDeNationalite1` FOREIGN KEY (`numAuteur`) REFERENCES `Auteur` (`numAuteur`) ON DELETE CASCADE ON UPDATE CASCADE, - ADD CONSTRAINT `ctEstDeNationalite2` FOREIGN KEY (`numNationalite`) REFERENCES `Nationalite` (`numNationalite`) ON DELETE CASCADE ON UPDATE CASCADE; - --- --- Contraintes pour la table `Livre` --- -ALTER TABLE `Livre` - ADD CONSTRAINT `ctL1` FOREIGN KEY (`numGenre`) REFERENCES `Genre` (`numGenre`) ON DELETE CASCADE ON UPDATE CASCADE; -COMMIT; - -/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; -/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; -/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; diff --git a/TP4/ex0/config/connexion.php b/TP4/ex0/config/connexion.php deleted file mode 100644 index 27af8d90771bbef9fe9936785fae5568773a251b..0000000000000000000000000000000000000000 --- a/TP4/ex0/config/connexion.php +++ /dev/null @@ -1,39 +0,0 @@ -<?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>"; - } - } -} - -?> diff --git a/TP4/ex0/controleur/controleurAuteur.php b/TP4/ex0/controleur/controleurAuteur.php deleted file mode 100644 index 96dffe1264861edb77527a42717df1cd43d21b12..0000000000000000000000000000000000000000 --- a/TP4/ex0/controleur/controleurAuteur.php +++ /dev/null @@ -1,35 +0,0 @@ -<?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"); - } - - } - -?> diff --git a/TP4/ex0/css/styles.css b/TP4/ex0/css/styles.css deleted file mode 100644 index 8ba9598e773a9c31a18a05b59bff1ff6f12e46a5..0000000000000000000000000000000000000000 --- a/TP4/ex0/css/styles.css +++ /dev/null @@ -1,13 +0,0 @@ -.ligne { - display:flex; - flex-direction: row; - justify-content: space-between; - margin-top:10px; - margin-left:5%; - width:50%; -} - -nav { - margin:10px; - padding:5px; -} diff --git a/TP4/ex0/modele/auteur.php b/TP4/ex0/modele/auteur.php deleted file mode 100644 index 87e37b311bb6e53c09c7cbe2e96569dba51b9229..0000000000000000000000000000000000000000 --- a/TP4/ex0/modele/auteur.php +++ /dev/null @@ -1,71 +0,0 @@ -<?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(); - } - } - -} -?> diff --git a/TP4/ex0/routeur.php b/TP4/ex0/routeur.php deleted file mode 100644 index 640a9ba99b1c405ceead9f194533e2d2ab9d931c..0000000000000000000000000000000000000000 --- a/TP4/ex0/routeur.php +++ /dev/null @@ -1,10 +0,0 @@ -<?php - require_once("config/connexion.php"); - Database::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(); -?> diff --git a/TP4/ex0/vue/debut.php b/TP4/ex0/vue/debut.php deleted file mode 100644 index 250267fdb23821d5710a65199d9a323f9a3745d3..0000000000000000000000000000000000000000 --- a/TP4/ex0/vue/debut.php +++ /dev/null @@ -1,8 +0,0 @@ -<!DOCTYPE html> -<html lang="fr"> - <head> - <meta charset="utf-8"> - <title><?php echo $titre; ?></title> - <link rel="stylesheet" href="css/styles.css"> - </head> - <body> diff --git a/TP4/ex0/vue/fin.html b/TP4/ex0/vue/fin.html deleted file mode 100644 index b605728ee26a9b0a7be60e81d23f660a87893ebb..0000000000000000000000000000000000000000 --- a/TP4/ex0/vue/fin.html +++ /dev/null @@ -1,2 +0,0 @@ - </body> -</html> diff --git a/TP4/ex0/vue/lesAuteurs.php b/TP4/ex0/vue/lesAuteurs.php deleted file mode 100644 index 17763fe00e1daac232a8d71a8e7a703eebfcec2c..0000000000000000000000000000000000000000 --- a/TP4/ex0/vue/lesAuteurs.php +++ /dev/null @@ -1,5 +0,0 @@ -<?php - foreach ($tableauAffichage as $ligne) { - echo $ligne; - } -?> diff --git a/TP4/ex0/vue/menu.html b/TP4/ex0/vue/menu.html deleted file mode 100644 index dc225ff8661c5da5bf23be0da965e8c691b15dc7..0000000000000000000000000000000000000000 --- a/TP4/ex0/vue/menu.html +++ /dev/null @@ -1,3 +0,0 @@ -<nav> - <a href="routeur.php?action=lireAuteurs">tous les auteurs</a> -</nav> diff --git a/TP4/ex0/vue/unAuteur.php b/TP4/ex0/vue/unAuteur.php deleted file mode 100644 index 8e7b2b7342338cb3e2d43c32f9fcad1017683117..0000000000000000000000000000000000000000 --- a/TP4/ex0/vue/unAuteur.php +++ /dev/null @@ -1,3 +0,0 @@ -<?php - $auteur->afficher(); -?> diff --git a/TP4/ex1.zip b/TP4/ex1.zip deleted file mode 100644 index dee9d1fa9a392df52fcce928870a11ead173c25e..0000000000000000000000000000000000000000 Binary files a/TP4/ex1.zip and /dev/null differ diff --git a/TP4/ex1/.env b/TP4/ex1/.env deleted file mode 100644 index 5200165ceea1a9ce0dc91c381b1043a26518932f..0000000000000000000000000000000000000000 --- a/TP4/ex1/.env +++ /dev/null @@ -1,4 +0,0 @@ -DB_HOST=localhost -DB_NAME=iut-dev -DB_LOGIN=iut-dev-user -DB_PASSWORD=p73i74KAV8lami2iyIpehE5ozic8GA diff --git a/TP4/ex1/app/helpers/config.php b/TP4/ex1/app/helpers/config.php deleted file mode 100644 index c4a9e47d21a9f3faace1afdc5a6ccdbcd20c5f29..0000000000000000000000000000000000000000 --- a/TP4/ex1/app/helpers/config.php +++ /dev/null @@ -1,19 +0,0 @@ -<?php -/** - * @param string $index - * @return string - */ -function config(string $index) : string -{ - $envPath = getcwd() . "/.env"; - if(file_exists($envPath)){ - $index = str_replace('_', '\\_', $index); - $envFile = file_get_contents($envPath); - preg_match("/" . $index . '=(.*?)\n/', $envFile, $matches); - $value = $matches[count($matches) - 1]; - $value = preg_replace('/[^A-Za-z0-9\-]/', '', $value); - return $value; - } else { - return ""; - } -} \ No newline at end of file diff --git a/TP4/ex1/app/models/View.php b/TP4/ex1/app/models/View.php deleted file mode 100644 index 215012d0ca3288f77c001e3e3ba3a95d3d576eb8..0000000000000000000000000000000000000000 --- a/TP4/ex1/app/models/View.php +++ /dev/null @@ -1,99 +0,0 @@ -<?php - -/** - * Tentative de créer un système de template. - */ -class View -{ - /** - * S'occupe d'ouvrir la template. - * @param string $viewName - * @param array $args - * @return string - */ - public static function load(string $viewName, array $args = []): string - { - $viewPathParts = explode(".", $viewName); - $viewPath = ""; - foreach ($viewPathParts as $pathPart){ - $viewPath .= "/" . $pathPart; - } - $viewPath = "resources/views" . $viewPath . ".php"; - if(file_exists($viewPath)){ - return self::render(self::parse($viewPath), $args); - }else{ - return "La vue " . $viewName . " est introuvable."; - } - } - - /** - * S'occuper de remplir la template - * @param string $viewPath - * @param array $args - * @return string - */ - public static function parse(string $viewPath): string - { - $viewContent = file_get_contents($viewPath); - - // On va chercher le @extends('nom-de-la-vue') (seul le premier est pris en compte) - preg_match("/@extends[ ]{0,1}\([\"|'](.*?)[\"|']\)/", $viewContent, $extendMatch); - if(!empty($extendMatch)){ - $contentToPlaceInExtends = str_replace($extendMatch[0], "", $viewContent); - $viewContent = self::load($extendMatch[1]); - - // Maintenant on va regarder si on a pas des @yield('nom') à remplacer - // On commence avec les @section("nom", "valeur"). L'ordre est important car la second regex peut englober la première. - preg_match_all("/@section[ ]{0,1}\([ ]{0,1}[\"|'](.*?)[\"|'][ ]{0,1},[ ]{0,1}[\"|'](.*?)[\"|'][ ]{0,1}\)/", - $contentToPlaceInExtends, $inlineSectionMatches); - for($i = 0; $i<count($inlineSectionMatches[0]); $i++){ - $viewContent = preg_replace( - "/@yield[ ]{0,1}\([\"|']" . preg_quote($inlineSectionMatches[1][$i]) . "[\"|']\)/", - $inlineSectionMatches[2][$i], - $viewContent - ); - - // On supprime la directive dans le contenu mis de côté car la regex du dessous capte aussi celle-ci. - $contentToPlaceInExtends = str_replace($inlineSectionMatches[0][$i], - $inlineSectionMatches[2][$i], - $contentToPlaceInExtends); - } - - // Et @section("nom") --> @endsection - preg_match_all("/@section[ ]{0,1}\([ ]{0,1}[\"|'](.*?)[\"|'][ ]{0,1}\)((\n|.)*?)@endsection/", - $contentToPlaceInExtends, $sectionMatches); - for($i = 0; $i<count($sectionMatches[0]); $i++){ - //echo $sectionMatches[1][$i] . " - " . $sectionMatches[2][$i]; - $viewContent = preg_replace( - "/@yield[ ]{0,1}\([\"|']" . preg_quote($sectionMatches[1][$i]) . "[\"|']\)/", - $sectionMatches[2][$i], - $viewContent - ); - } - } - - // On va rechercher toutes les concaténations {{ $var }} - $viewContent = preg_replace("/\{\{(.*?)\}\}/", "<?=$1?>", $viewContent); - - // On va rechercher tous les @foreach($var1 as $var2) @endforeach - $viewContent = preg_replace("/@foreach[ ]{0,1}\((.*?) as (.*?)\)/", - "<?php foreach($1 as $2) { ?>", $viewContent); - $viewContent = preg_replace("/@endforeach/", "<?php } ?>", $viewContent); - - return $viewContent; - } - - /** - * @param string $viewCode - * @param array $args - * @return string - */ - public static function render(string $viewCode, array $args = []): string - { - extract($args); - // On ouvre le buffer pour enregistrer le résultat de l'echo. - ob_start(); - eval("?>" . $viewCode . "<?php"); - return ob_get_clean(); - } -} \ No newline at end of file diff --git a/TP4/ex1/controller/ControleurAdherent.php b/TP4/ex1/controller/ControleurAdherent.php deleted file mode 100644 index 8373cf5f2d84bb29f0a1adbde8f236fc2ac6b7d8..0000000000000000000000000000000000000000 --- a/TP4/ex1/controller/ControleurAdherent.php +++ /dev/null @@ -1,44 +0,0 @@ -<?php -require_once("models/Adherent.php"); - -class ControleurAdherent -{ - /** - * Charge la page de la liste des adhérents. - * @return string - * @throws Exception - */ - public static function lireAdherents(): string - { - $adherents = Adherent::getAllAdherents(); - $objects = []; - foreach ($adherents as $adherent){ - $object['title'] = $adherent->prenomAdherent . " " . $adherent->nomAdherent; - $object['desc'] = "ID: {$adherent->login}<br>Date d'adhésion: {$adherent->dateAdhesion->format("Y-m-d")}"; - $object['url'] = "index.php?action=lireAdherent&login={$adherent->login}"; - $objects[] = $object; - } - return view('data-grid', [ - 'pageTitle' => 'Liste des adhérents', - 'pageDesc' => 'Voici la liste de tous les adhérents', - 'objects' => $objects - ]); - } - - /** - * Charge la page du détail d'un adhérent. - * @return string - * @throws Exception - */ - public static function lireAdherent(): string - { - if (empty($_GET["login"])) { - die("Le paramètre login n'est pas spécifié."); - } - $adherent = Adherent::getAdherentByLogin($_GET["login"]); - return view('simple-data', [ - 'pageTitle' => 'Information du livre', - 'pageContent' => $adherent->afficher() - ]); - } -} \ No newline at end of file diff --git a/TP4/ex1/controller/ControleurAuteur.php b/TP4/ex1/controller/ControleurAuteur.php deleted file mode 100644 index 7f648d6af10d4ab0678c61561972004a82a84f1a..0000000000000000000000000000000000000000 --- a/TP4/ex1/controller/ControleurAuteur.php +++ /dev/null @@ -1,49 +0,0 @@ -<?php -require_once("models/Auteur.php"); - -/** - * - */ -class ControleurAuteur -{ - /** - * Charge la page de la liste des auteurs. - * @return string - */ - public static function lireAuteurs() : string - { - $auteurs = Auteur::getAllAuteurs(); - - $objects = []; - foreach ($auteurs as $auteur){ - $object['title'] = $auteur->prenom . " " . $auteur->nom; - $object['desc'] = "ID: {$auteur->numAuteur}<br>Date de naissance: {$auteur->anneeNaissance}"; - $object['url'] = "index.php?action=lireAuteur&numAuteur={$auteur->numAuteur}"; - $objects[] = $object; - } - return view('data-grid', [ - 'pageTitle' => 'Liste des auteurs', - 'pageDesc' => 'Voici la liste de tous les auteurs', - 'objects' => $objects - ]); - } - - /** - * Charge la page du détail d'un auteur. - * @return string - */ - public static function lireAuteur() : string - { - if (empty($_GET["numAuteur"])) { - die("Le paramètre numAuteur n'est pas spécifié."); - } - $auteur = Auteur::getAuteurByNum($_GET["numAuteur"]); - return view('simple-data', [ - 'pageTitle' => 'Information du livre', - 'pageContent' => $auteur->afficher() - ]); - } - -} - -?> diff --git a/TP4/ex1/controller/ControleurLivre.php b/TP4/ex1/controller/ControleurLivre.php deleted file mode 100644 index 3d5b0d983a794a78f8bf2a96b9684673ddbf5e3e..0000000000000000000000000000000000000000 --- a/TP4/ex1/controller/ControleurLivre.php +++ /dev/null @@ -1,46 +0,0 @@ -<?php -require_once("models/Livre.php"); - -class ControleurLivre -{ - /** - * Charge la page de la liste des adhérents. - * @return string - * @throws Exception - */ - public static function lireLivres(): string - { - $livres = Livre::getAllLivres(); - - $objects = []; - foreach ($livres as $livre){ - $object['title'] = $livre->titre; - $object['desc'] = "ID: {$livre->numLivre}<br>Année de parution: {$livre->anneeParution}"; - $object['url'] = "index.php?action=lireLivre&numLivre={$livre->numLivre}"; - $objects[] = $object; - } - return view('data-grid', [ - 'pageTitle' => 'Liste des livres', - 'pageDesc' => 'Voici la liste de tous les livres', - 'objects' => $objects - ]); - } - - /** - * Charge la page du détail d'un adhérent. - * @return string - * @throws Exception - */ - public static function lireLivre(): string - { - if (empty($_GET["numLivre"])) { - die("Le paramètre numLivre n'est pas spécifié."); - } - $livre = Livre::getLivreByNumLivre($_GET["numLivre"]); - - return view('simple-data', [ - 'pageTitle' => 'Information du livre', - 'pageContent' => $livre->afficher() - ]); - } -} \ No newline at end of file diff --git a/TP4/ex1/index.php b/TP4/ex1/index.php deleted file mode 100644 index 17c98ca6cbdfef2a3129d2c8c23fb5a85fd9cb08..0000000000000000000000000000000000000000 --- a/TP4/ex1/index.php +++ /dev/null @@ -1,32 +0,0 @@ -<?php -ini_set('display_errors', 1); -ini_set('display_startup_errors', 1); -error_reporting(E_ALL); - -require_once("app/helpers/config.php"); -require_once("app/helpers/views.php"); -require_once("app/models/Database.php"); - -require_once("controller/ControleurAuteur.php"); -require_once("controller/ControleurAdherent.php"); - -require_once("controller/ControleurLivre.php"); - -Database::connect(); - -if (empty($_GET["action"])) { - echo ControleurAuteur::lireAuteurs(); -} else { - if (in_array($_GET["action"], get_class_methods('ControleurAuteur'))) { - $action = $_GET["action"]; - echo ControleurAuteur::$action(); - } elseif (in_array($_GET["action"], get_class_methods('ControleurAdherent'))) { - $action = $_GET["action"]; - echo ControleurAdherent::$action(); - } elseif (in_array($_GET["action"], get_class_methods('ControleurLivre'))) { - $action = $_GET["action"]; - echo ControleurLivre::$action(); - } -} - -?> diff --git a/TP4/ex1/models/Auteur.php b/TP4/ex1/models/Auteur.php deleted file mode 100644 index 2dd8482a287340f93b1568623434de0dac5296a2..0000000000000000000000000000000000000000 --- a/TP4/ex1/models/Auteur.php +++ /dev/null @@ -1,68 +0,0 @@ -<?php -require_once "Objet.php"; - -class Auteur extends Objet -{ - // attributs - protected ?int $numAuteur; - protected ?string $nom; - protected ?string $prenom; - protected ?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); - $response = null; - 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 - $response = $req_prep->fetch(); - // retour - - } catch (PDOException $e) { - echo $e->getMessage(); - } - return $response; - } - - // méthode static qui retourne un auteur identifié par son numAuteur - - public function afficher() - { - return "<p>auteur $this->prenom $this->nom, né(e) en $this->anneeNaissance </p>"; - } - -} - -?> diff --git a/TP4/ex1/models/Objet.php b/TP4/ex1/models/Objet.php deleted file mode 100644 index 28c122325cdc9b7e41661e22ab2b031059f4a91e..0000000000000000000000000000000000000000 --- a/TP4/ex1/models/Objet.php +++ /dev/null @@ -1,35 +0,0 @@ -<?php -require_once "Objet.php"; - -/** - * Implémente les magic methods. - */ -class Objet -{ - public function __construct($data = null) - { - if(!is_null($data)){ - foreach ($data as $key => $value){ - $this->$key = $value; - } - } - } - /** - * @param $name - * @return mixed - */ - public function __get($name) - { - return $this->$name ?? null; - } - - /** - * @param $name - * @param $value - * @return void - */ - public function __set($name, $value) - { - $this->$name = $value; - } -} \ No newline at end of file diff --git a/TP4/ex1/resources/css/styles.css b/TP4/ex1/resources/css/styles.css deleted file mode 100644 index 8ba9598e773a9c31a18a05b59bff1ff6f12e46a5..0000000000000000000000000000000000000000 --- a/TP4/ex1/resources/css/styles.css +++ /dev/null @@ -1,13 +0,0 @@ -.ligne { - display:flex; - flex-direction: row; - justify-content: space-between; - margin-top:10px; - margin-left:5%; - width:50%; -} - -nav { - margin:10px; - padding:5px; -} diff --git a/TP4/ex1/resources/views/components/navbar.php b/TP4/ex1/resources/views/components/navbar.php deleted file mode 100644 index 542d9600855951d0a48daec394598139ebfe3d6e..0000000000000000000000000000000000000000 --- a/TP4/ex1/resources/views/components/navbar.php +++ /dev/null @@ -1,30 +0,0 @@ -<nav class="navbar navbar-expand-lg navbar-dark bg-dark"> - <div class="container-fluid"> - <a class="navbar-brand" href="?action=lireAuteurs">Bibliothèque</a> - <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation"> - <span class="navbar-toggler-icon"></span> - </button> - <div class="collapse navbar-collapse" id="navbarNav"> - <ul class="navbar-nav"> - <li class="nav-item"> - <a class="nav-link" href="?action=lireAuteurs"> - Liste des auteurs - </a> - </li> - <li class="nav-item"> - <a class="nav-link" href="?action=lireAdherents">Liste des adéherents</a> - </li> - <li class="nav-item"> - <a class="nav-link" href="?action=lireLivres">Liste des livres</a> - </li> - </ul> - </div> - </div> -</nav> -<script type="text/javascript"> - const urlParams = new URLSearchParams(window.location.search); - let links = document.querySelectorAll('a[href="?action='+urlParams.get("action")+'"]'); - for (var i=0; i<links.length; i++){ - links[i].classList.add("active"); - } -</script> \ No newline at end of file diff --git a/TP4/ex1/resources/views/data-grid.php b/TP4/ex1/resources/views/data-grid.php deleted file mode 100644 index bab5121ada6f840b13e62a0122b77bce0280fbbf..0000000000000000000000000000000000000000 --- a/TP4/ex1/resources/views/data-grid.php +++ /dev/null @@ -1,26 +0,0 @@ -@extends('layouts.page-layout') - -@section('title', '{{ $pageTitle }}') - -@section('content') -<div class="container"> - <h1>{{ $pageTitle }}</h1> - <p>{{ $pageDesc }}</p> - <div class="d-flex flex-wrap justify-content-between"> - @foreach($objects as $object) - <div class="card mb-2" style="width: 18rem;"> - <div class="card-body"> - <h5 class="card-title">{{ $object['title'] }}</h5> - <p class="card-text"> - {{ $object['desc'] }} - </p> - <a class="btn btn-primary" - href="{{ $object['url'] }}"> - Lire les détails - </a> - </div> - </div> - @endforeach - </div> -</div> -@endsection \ No newline at end of file diff --git a/TP4/ex1/resources/views/layouts/page-layout.php b/TP4/ex1/resources/views/layouts/page-layout.php deleted file mode 100644 index 1734d49a9388804026029e0d0d0f0fe30e1e6858..0000000000000000000000000000000000000000 --- a/TP4/ex1/resources/views/layouts/page-layout.php +++ /dev/null @@ -1,13 +0,0 @@ -<html lang="fr"> -<head> - <meta charset="utf-8"> - <meta name="viewport" content="width=device-width, initial-scale=1"> - <title>@yield("title")</title> - <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-Zenh87qX5JnK2Jl0vWa8Ck2rdkQ2Bzep5IDxbcnCeuOxjzrPF/et3URy9Bv1WTRi" crossorigin="anonymous"> -</head> -<body class=""> - <?=view("components.navbar")?> - @yield("content") - <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.2/dist/js/bootstrap.bundle.min.js" integrity="sha384-OERcA2EqjJCMA+/3y+gxIOqMEjwtxJY7qPCqsdltbNJuaOe923+mo//f6V8Qbsw3" crossorigin="anonymous"></script> -</body> -</html> diff --git a/TP4/ex1/resources/views/simple-data.php b/TP4/ex1/resources/views/simple-data.php deleted file mode 100644 index 17bbe514fbf2970fda934a6cb34b98299e6987cf..0000000000000000000000000000000000000000 --- a/TP4/ex1/resources/views/simple-data.php +++ /dev/null @@ -1,10 +0,0 @@ -@extends('layouts.page-layout') - -@section('title', '{{ $pageTitle }}') - -@section('content') -<div class="container"> - <h1>{{ $pageTitle }}</h1> - {{ $pageContent }} -</div> -@endsection \ No newline at end of file diff --git a/TP4/ex1/test.php b/TP4/ex1/test.php deleted file mode 100644 index 67f33f8c4bf9dc7db3eaaa75b8a620f289b99a2d..0000000000000000000000000000000000000000 --- a/TP4/ex1/test.php +++ /dev/null @@ -1,3 +0,0 @@ -<?php -$test = "TESTEUU"; -echo('Ceci est un <?=$test?>!'); \ No newline at end of file diff --git a/TP5/.env b/TP5/.env deleted file mode 100644 index 5200165ceea1a9ce0dc91c381b1043a26518932f..0000000000000000000000000000000000000000 --- a/TP5/.env +++ /dev/null @@ -1,4 +0,0 @@ -DB_HOST=localhost -DB_NAME=iut-dev -DB_LOGIN=iut-dev-user -DB_PASSWORD=p73i74KAV8lami2iyIpehE5ozic8GA diff --git a/TP5/TP5_web.pdf b/TP5/TP5_web.pdf deleted file mode 100644 index b3cca27ab80104a0d1683cd97ecb78049cab5834..0000000000000000000000000000000000000000 Binary files a/TP5/TP5_web.pdf and /dev/null differ diff --git a/TP5/app/helpers/config.php b/TP5/app/helpers/config.php deleted file mode 100644 index c4a9e47d21a9f3faace1afdc5a6ccdbcd20c5f29..0000000000000000000000000000000000000000 --- a/TP5/app/helpers/config.php +++ /dev/null @@ -1,19 +0,0 @@ -<?php -/** - * @param string $index - * @return string - */ -function config(string $index) : string -{ - $envPath = getcwd() . "/.env"; - if(file_exists($envPath)){ - $index = str_replace('_', '\\_', $index); - $envFile = file_get_contents($envPath); - preg_match("/" . $index . '=(.*?)\n/', $envFile, $matches); - $value = $matches[count($matches) - 1]; - $value = preg_replace('/[^A-Za-z0-9\-]/', '', $value); - return $value; - } else { - return ""; - } -} \ No newline at end of file diff --git a/TP5/app/helpers/views.php b/TP5/app/helpers/views.php deleted file mode 100644 index 2546cdb1d76d4592e6a83c8b497914350cacb3a7..0000000000000000000000000000000000000000 --- a/TP5/app/helpers/views.php +++ /dev/null @@ -1,12 +0,0 @@ -<?php -require_once("app/models/View.php"); -/** - * Charge le contenu d'une vue avec des paramètres. - * @param string $viewName - * @param array $args - * @return string - */ -function view(string $viewName, array $args = []): string -{ - return View::load($viewName, $args); -} \ No newline at end of file diff --git a/TP5/app/models/Database.php b/TP5/app/models/Database.php deleted file mode 100644 index 570f4a95f13f261ef74675375eb89a45d95a3348..0000000000000000000000000000000000000000 --- a/TP5/app/models/Database.php +++ /dev/null @@ -1,39 +0,0 @@ -<?php - -class Database -{ - // 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() - { - $hostname = config("DB_HOST"); - $database = config("DB_NAME"); - $login = config("DB_LOGIN"); - $password = config("DB_PASSWORD"); - $t = self::$tabUTF8; - try { - self::$pdo = new PDO("mysql:host=$hostname;dbname=$database", $login, $password, $t); - self::$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); - } catch (PDOException $e) { - echo "Erreur de connexion : " . $e->getMessage() . "<br>"; - } - } -} - -?> diff --git a/TP5/app/models/View.php b/TP5/app/models/View.php deleted file mode 100644 index 215012d0ca3288f77c001e3e3ba3a95d3d576eb8..0000000000000000000000000000000000000000 --- a/TP5/app/models/View.php +++ /dev/null @@ -1,99 +0,0 @@ -<?php - -/** - * Tentative de créer un système de template. - */ -class View -{ - /** - * S'occupe d'ouvrir la template. - * @param string $viewName - * @param array $args - * @return string - */ - public static function load(string $viewName, array $args = []): string - { - $viewPathParts = explode(".", $viewName); - $viewPath = ""; - foreach ($viewPathParts as $pathPart){ - $viewPath .= "/" . $pathPart; - } - $viewPath = "resources/views" . $viewPath . ".php"; - if(file_exists($viewPath)){ - return self::render(self::parse($viewPath), $args); - }else{ - return "La vue " . $viewName . " est introuvable."; - } - } - - /** - * S'occuper de remplir la template - * @param string $viewPath - * @param array $args - * @return string - */ - public static function parse(string $viewPath): string - { - $viewContent = file_get_contents($viewPath); - - // On va chercher le @extends('nom-de-la-vue') (seul le premier est pris en compte) - preg_match("/@extends[ ]{0,1}\([\"|'](.*?)[\"|']\)/", $viewContent, $extendMatch); - if(!empty($extendMatch)){ - $contentToPlaceInExtends = str_replace($extendMatch[0], "", $viewContent); - $viewContent = self::load($extendMatch[1]); - - // Maintenant on va regarder si on a pas des @yield('nom') à remplacer - // On commence avec les @section("nom", "valeur"). L'ordre est important car la second regex peut englober la première. - preg_match_all("/@section[ ]{0,1}\([ ]{0,1}[\"|'](.*?)[\"|'][ ]{0,1},[ ]{0,1}[\"|'](.*?)[\"|'][ ]{0,1}\)/", - $contentToPlaceInExtends, $inlineSectionMatches); - for($i = 0; $i<count($inlineSectionMatches[0]); $i++){ - $viewContent = preg_replace( - "/@yield[ ]{0,1}\([\"|']" . preg_quote($inlineSectionMatches[1][$i]) . "[\"|']\)/", - $inlineSectionMatches[2][$i], - $viewContent - ); - - // On supprime la directive dans le contenu mis de côté car la regex du dessous capte aussi celle-ci. - $contentToPlaceInExtends = str_replace($inlineSectionMatches[0][$i], - $inlineSectionMatches[2][$i], - $contentToPlaceInExtends); - } - - // Et @section("nom") --> @endsection - preg_match_all("/@section[ ]{0,1}\([ ]{0,1}[\"|'](.*?)[\"|'][ ]{0,1}\)((\n|.)*?)@endsection/", - $contentToPlaceInExtends, $sectionMatches); - for($i = 0; $i<count($sectionMatches[0]); $i++){ - //echo $sectionMatches[1][$i] . " - " . $sectionMatches[2][$i]; - $viewContent = preg_replace( - "/@yield[ ]{0,1}\([\"|']" . preg_quote($sectionMatches[1][$i]) . "[\"|']\)/", - $sectionMatches[2][$i], - $viewContent - ); - } - } - - // On va rechercher toutes les concaténations {{ $var }} - $viewContent = preg_replace("/\{\{(.*?)\}\}/", "<?=$1?>", $viewContent); - - // On va rechercher tous les @foreach($var1 as $var2) @endforeach - $viewContent = preg_replace("/@foreach[ ]{0,1}\((.*?) as (.*?)\)/", - "<?php foreach($1 as $2) { ?>", $viewContent); - $viewContent = preg_replace("/@endforeach/", "<?php } ?>", $viewContent); - - return $viewContent; - } - - /** - * @param string $viewCode - * @param array $args - * @return string - */ - public static function render(string $viewCode, array $args = []): string - { - extract($args); - // On ouvre le buffer pour enregistrer le résultat de l'echo. - ob_start(); - eval("?>" . $viewCode . "<?php"); - return ob_get_clean(); - } -} \ No newline at end of file diff --git a/TP5/controller/ControleurAuteur.php b/TP5/controller/ControleurAuteur.php deleted file mode 100644 index fdd9baf049092a29412c458522464d0d06f10c41..0000000000000000000000000000000000000000 --- a/TP5/controller/ControleurAuteur.php +++ /dev/null @@ -1,48 +0,0 @@ -<?php -require_once "ControleurObjet.php"; -require_once("models/Auteur.php"); - -class ControleurAuteur extends ControleurObjet -{ - protected static string $object = "Auteur"; - /** - * Charge la page de la liste des auteurs. - * @return string - */ - public static function lireAuteurs() : string - { - $auteurs = Auteur::getAllAuteurs(); - - $objects = []; - foreach ($auteurs as $auteur){ - $object['title'] = $auteur->prenom . " " . $auteur->nom; - $object['desc'] = "ID: {$auteur->numAuteur}<br>Date de naissance: {$auteur->anneeNaissance}"; - $object['url'] = "index.php?action=lireAuteur&numAuteur={$auteur->numAuteur}"; - $objects[] = $object; - } - return view('data-grid', [ - 'pageTitle' => 'Liste des auteurs', - 'pageDesc' => 'Voici la liste de tous les auteurs', - 'objects' => $objects - ]); - } - - /** - * Charge la page du détail d'un auteur. - * @return string - */ - public static function lireAuteur() : string - { - if (empty($_GET["numAuteur"])) { - die("Le paramètre numAuteur n'est pas spécifié."); - } - $auteur = Auteur::getAuteurByNum($_GET["numAuteur"]); - return view('simple-data', [ - 'pageTitle' => 'Information du livre', - 'pageContent' => $auteur->afficher() - ]); - } - -} - -?> diff --git a/TP5/controller/ControleurObjet.php b/TP5/controller/ControleurObjet.php deleted file mode 100644 index 04f34485eedd31828911f013ce59e4c153a7235d..0000000000000000000000000000000000000000 --- a/TP5/controller/ControleurObjet.php +++ /dev/null @@ -1,15 +0,0 @@ -<?php - -/** - * Désolé mais le TP5 est une mauvaise idée de bout en bout. - * Je me suis arrêté à l'ex 2 car je ne vois pas comment on pourrait aisément rassembler tous les contrôleurs ici - * étant donné que le contenu diffère légèrement selon les modèles. - */ -class ControleurObjet -{ - public static function lireObjets() : string - { - $titre = "Listes des " . strtolower(static::$object) . "s"; - return $titre; - } -} \ No newline at end of file diff --git a/TP5/index.php b/TP5/index.php deleted file mode 100644 index 47a83c39313ce909c611361cece19289f76cdcb4..0000000000000000000000000000000000000000 --- a/TP5/index.php +++ /dev/null @@ -1,57 +0,0 @@ -<?php -ini_set('display_errors', 1); -ini_set('display_startup_errors', 1); -error_reporting(E_ALL); - -require_once("app/helpers/config.php"); -require_once("app/helpers/views.php"); -require_once("app/models/Database.php"); - -require_once("controller/ControleurAuteur.php"); -require_once("controller/ControleurAdherent.php"); - -require_once("controller/ControleurLivre.php"); - -Database::connect(); - -if (empty($_GET["action"])) { - echo ControleurAuteur::lireAuteurs(); -} else { - // Test TP 5 - if ($_GET["action"] === "lireObjets" && !empty($_GET["objet"])) { - switch ($_GET["objet"]){ - case 'Auteur': - echo ControleurAuteur::lireObjets(); - break; - default: - echo ControleurAuteur::lireObjets(); - break; - } - } - // Fin test TP5 - - // C'est plus long que get_class_methods mais c'est moins sujet à problèmes. - switch ($_GET["action"]){ - case "lireAuteur": - echo ControleurAuteur::lireAuteur(); - break; - case "lireAuteurs": - echo ControleurAuteur::lireAuteurs(); - break; - case "lireAdherent": - echo ControleurAdherent::lireAdherent(); - break; - case "lireAdherents": - echo ControleurAdherent::lireAdherents(); - break; - case "lireLivre": - echo ControleurLivre::lireLivre(); - break; - case "lireLivres": - echo ControleurLivre::lireLivres(); - break; - default: - echo ControleurAuteur::lireAuteur(); - break; - } -} diff --git a/TP5/models/Adherent.php b/TP5/models/Adherent.php deleted file mode 100644 index 58668a7f6f7f91b275d599571e2b97ed9d5a928e..0000000000000000000000000000000000000000 --- a/TP5/models/Adherent.php +++ /dev/null @@ -1,104 +0,0 @@ -<?php -require_once "Objet.php"; - -class Adherent extends Objet -{ - protected string $login; - protected string $mdp; - protected string $nomAdherent; - protected string $prenomAdherent; - protected string $email; - protected DateTime $dateAdhesion; - protected int $numCategorie; - - /** - * @param string $login - * @param string $mdp - * @param string $nomAdherent - * @param string $prenomAdherent - * @param string $email - * @param DateTime $dateAdhesion - * @param int $numCategorie - */ - public function __construct(string $login, string $mdp, string $nomAdherent, string $prenomAdherent, string $email, DateTime $dateAdhesion, int $numCategorie) - { - $this->login = $login; - $this->mdp = $mdp; - $this->nomAdherent = $nomAdherent; - $this->prenomAdherent = $prenomAdherent; - $this->email = $email; - $this->dateAdhesion = $dateAdhesion; - $this->numCategorie = $numCategorie; - } - - /** - * @return array - * @throws Exception - */ - public static function getAllAdherents(): array - { - // écriture de la requête - $requete = "SELECT * FROM Adherent;"; - // 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_ASSOC); - $resultat = $resultat->fetchAll(); - - $tableau = array(); - foreach ($resultat as $row){ - $tableau[] = new Adherent($row['login'], - $row['mdp'], - $row['nomAdherent'], - $row['prenomAdherent'], - $row['email'], - new DateTime($row['dateAdhesion']), - $row['numCategorie']); - } - return $tableau; - } - - /** - * Trouve un adhérent selon son login unique. - * @param $login - * @return Adherent - * @throws Exception - */ - public static function getAdherentByLogin($login) : Adherent - { - // écriture de la requête - $requetePreparee = "SELECT * FROM Adherent WHERE login = :login;"; - $req_prep = Database::pdo()->prepare($requetePreparee); - // le tableau des valeurs - $valeurs = array("login" => $login); - $response = null; - try { - // envoi de la requête - $req_prep->execute($valeurs); - // traitement de la réponse - $req_prep->setFetchmode(PDO::FETCH_ASSOC); - // récupération de l'auteur - $row = $req_prep->fetch(); - $response = new Adherent($row['login'], - $row['mdp'], - $row['nomAdherent'], - $row['prenomAdherent'], - $row['email'], - new DateTime($row['dateAdhesion']), - $row['numCategorie']); - - } catch (PDOException $e) { - echo $e->getMessage(); - } - return $response; - } - - /** - * @return string - */ - public function afficher(): string - { - return "<p>" . $this->prenomAdherent . " " . $this->nomAdherent . " a rejoint le " - .$this->dateAdhesion->format('Y-m-d H:i:s'); - } -} \ No newline at end of file diff --git a/TP5/models/Auteur.php b/TP5/models/Auteur.php deleted file mode 100644 index 2dd8482a287340f93b1568623434de0dac5296a2..0000000000000000000000000000000000000000 --- a/TP5/models/Auteur.php +++ /dev/null @@ -1,68 +0,0 @@ -<?php -require_once "Objet.php"; - -class Auteur extends Objet -{ - // attributs - protected ?int $numAuteur; - protected ?string $nom; - protected ?string $prenom; - protected ?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); - $response = null; - 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 - $response = $req_prep->fetch(); - // retour - - } catch (PDOException $e) { - echo $e->getMessage(); - } - return $response; - } - - // méthode static qui retourne un auteur identifié par son numAuteur - - public function afficher() - { - return "<p>auteur $this->prenom $this->nom, né(e) en $this->anneeNaissance </p>"; - } - -} - -?> diff --git a/TP5/models/Categorie.php b/TP5/models/Categorie.php deleted file mode 100644 index cc90eab92b835a565e0cfa153aae7225cd447326..0000000000000000000000000000000000000000 --- a/TP5/models/Categorie.php +++ /dev/null @@ -1,78 +0,0 @@ -<?php - -/** - * - */ -class Categorie -{ - private int $numCategorie; - private string $libelle; - private int $nbLivresAutorises; - - /** - * @param int $numCategorie - * @param string $libelle - * @param int $nbLivresAutorises - */ - public function __construct(int $numCategorie, string $libelle, int $nbLivresAutorises) - { - $this->numCategorie = $numCategorie; - $this->libelle = $libelle; - $this->nbLivresAutorises = $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 diff --git a/TP5/models/DateEmprunt.php b/TP5/models/DateEmprunt.php deleted file mode 100644 index c8aef9679609f8cbbb69a82be13c8cf37ab26c28..0000000000000000000000000000000000000000 --- a/TP5/models/DateEmprunt.php +++ /dev/null @@ -1,41 +0,0 @@ -<?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 diff --git a/TP5/models/Genre.php b/TP5/models/Genre.php deleted file mode 100644 index 2c953d485903e032e9c2d92a3c52af154d32d8ce..0000000000000000000000000000000000000000 --- a/TP5/models/Genre.php +++ /dev/null @@ -1,49 +0,0 @@ -<?php - -class Genre -{ - private int $numGenre; - private string $intitule; - - /** - * @param int $numGenre - * @param string $intitule - */ - public function __construct(int $numGenre, string $intitule) - { - $this->numGenre = $numGenre; - $this->intitule = $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 diff --git a/TP5/models/Livre.php b/TP5/models/Livre.php deleted file mode 100644 index bde6024f752931bccd03f7fef748ea6955b78cea..0000000000000000000000000000000000000000 --- a/TP5/models/Livre.php +++ /dev/null @@ -1,75 +0,0 @@ -<?php -require_once "Objet.php"; - -class Livre extends Objet -{ - protected int $numLivre; - protected string $titre; - protected int $anneeParution; - protected int $numGenre; - - /** - * @param int $numLivre - * @param string $titre - * @param int $anneeParution - * @param int $numGenre - */ - public function __construct(int $numLivre, string $titre, int $anneeParution, int $numGenre) - { - $this->numLivre = $numLivre; - $this->titre = $titre; - $this->anneeParution = $anneeParution; - $this->numGenre = $numGenre; - } - - /** - * @return array - */ - public static function getAllLivres(): array - { - $query = Database::pdo()->query("SELECT * FROM Livre"); - $query->setFetchmode(PDO::FETCH_ASSOC); - $queryResult = $query->fetchAll(); - - $tableau = array(); - foreach ($queryResult as $row) { - $tableau[] = new Livre($row['numLivre'], - $row['titre'], - $row['anneeParution'], - $row['numGenre']); - } - return $tableau; - } - - /** - * @param int $numLivre - * @return Livre - */ - public static function getLivreByNumLivre(int $numLivre): Livre - { - $query = Database::pdo()->prepare("SELECT * FROM Livre WHERE numLivre = :numLivre"); - $response = null; - try { - // envoi de la requête - $query->execute(['numLivre' => $numLivre]); - $query->setFetchmode(PDO::FETCH_ASSOC); - $queryResult = $query->fetch(); - $response = new Livre($queryResult['numLivre'], - $queryResult['titre'], - $queryResult['anneeParution'], - $queryResult['numGenre']); - } catch (PDOException $e) { - echo $e->getMessage(); - } - return $response; - } - - /** - * @return string - */ - public function afficher(): string - { - return "<p>" . $this->titre . " est paru en " - . $this->anneeParution; - } -} \ No newline at end of file diff --git a/TP5/models/Nationalite.php b/TP5/models/Nationalite.php deleted file mode 100644 index aee6ad6413dab3ca78624c8d508dab4189f71951..0000000000000000000000000000000000000000 --- a/TP5/models/Nationalite.php +++ /dev/null @@ -1,36 +0,0 @@ -<?php - -class Nationalite -{ - private int $numNationalite; - private string $pays; - private string $abrege; - - /** - * @param int $numNationalite - * @param string $pays - * @param string $abrege - */ - public function __construct(int $numNationalite, string $pays, string $abrege) - { - $this->numNationalite = $numNationalite; - $this->pays = $pays; - $this->abrege = $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 diff --git a/TP5/models/Objet.php b/TP5/models/Objet.php deleted file mode 100644 index 28c122325cdc9b7e41661e22ab2b031059f4a91e..0000000000000000000000000000000000000000 --- a/TP5/models/Objet.php +++ /dev/null @@ -1,35 +0,0 @@ -<?php -require_once "Objet.php"; - -/** - * Implémente les magic methods. - */ -class Objet -{ - public function __construct($data = null) - { - if(!is_null($data)){ - foreach ($data as $key => $value){ - $this->$key = $value; - } - } - } - /** - * @param $name - * @return mixed - */ - public function __get($name) - { - return $this->$name ?? null; - } - - /** - * @param $name - * @param $value - * @return void - */ - public function __set($name, $value) - { - $this->$name = $value; - } -} \ No newline at end of file diff --git a/TP5/resources/css/styles.css b/TP5/resources/css/styles.css deleted file mode 100644 index 8ba9598e773a9c31a18a05b59bff1ff6f12e46a5..0000000000000000000000000000000000000000 --- a/TP5/resources/css/styles.css +++ /dev/null @@ -1,13 +0,0 @@ -.ligne { - display:flex; - flex-direction: row; - justify-content: space-between; - margin-top:10px; - margin-left:5%; - width:50%; -} - -nav { - margin:10px; - padding:5px; -} diff --git a/TP5/resources/views/components/navbar.php b/TP5/resources/views/components/navbar.php deleted file mode 100644 index 542d9600855951d0a48daec394598139ebfe3d6e..0000000000000000000000000000000000000000 --- a/TP5/resources/views/components/navbar.php +++ /dev/null @@ -1,30 +0,0 @@ -<nav class="navbar navbar-expand-lg navbar-dark bg-dark"> - <div class="container-fluid"> - <a class="navbar-brand" href="?action=lireAuteurs">Bibliothèque</a> - <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation"> - <span class="navbar-toggler-icon"></span> - </button> - <div class="collapse navbar-collapse" id="navbarNav"> - <ul class="navbar-nav"> - <li class="nav-item"> - <a class="nav-link" href="?action=lireAuteurs"> - Liste des auteurs - </a> - </li> - <li class="nav-item"> - <a class="nav-link" href="?action=lireAdherents">Liste des adéherents</a> - </li> - <li class="nav-item"> - <a class="nav-link" href="?action=lireLivres">Liste des livres</a> - </li> - </ul> - </div> - </div> -</nav> -<script type="text/javascript"> - const urlParams = new URLSearchParams(window.location.search); - let links = document.querySelectorAll('a[href="?action='+urlParams.get("action")+'"]'); - for (var i=0; i<links.length; i++){ - links[i].classList.add("active"); - } -</script> \ No newline at end of file diff --git a/TP5/resources/views/data-grid.php b/TP5/resources/views/data-grid.php deleted file mode 100644 index bab5121ada6f840b13e62a0122b77bce0280fbbf..0000000000000000000000000000000000000000 --- a/TP5/resources/views/data-grid.php +++ /dev/null @@ -1,26 +0,0 @@ -@extends('layouts.page-layout') - -@section('title', '{{ $pageTitle }}') - -@section('content') -<div class="container"> - <h1>{{ $pageTitle }}</h1> - <p>{{ $pageDesc }}</p> - <div class="d-flex flex-wrap justify-content-between"> - @foreach($objects as $object) - <div class="card mb-2" style="width: 18rem;"> - <div class="card-body"> - <h5 class="card-title">{{ $object['title'] }}</h5> - <p class="card-text"> - {{ $object['desc'] }} - </p> - <a class="btn btn-primary" - href="{{ $object['url'] }}"> - Lire les détails - </a> - </div> - </div> - @endforeach - </div> -</div> -@endsection \ No newline at end of file diff --git a/TP5/resources/views/layouts/page-layout.php b/TP5/resources/views/layouts/page-layout.php deleted file mode 100644 index 1734d49a9388804026029e0d0d0f0fe30e1e6858..0000000000000000000000000000000000000000 --- a/TP5/resources/views/layouts/page-layout.php +++ /dev/null @@ -1,13 +0,0 @@ -<html lang="fr"> -<head> - <meta charset="utf-8"> - <meta name="viewport" content="width=device-width, initial-scale=1"> - <title>@yield("title")</title> - <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-Zenh87qX5JnK2Jl0vWa8Ck2rdkQ2Bzep5IDxbcnCeuOxjzrPF/et3URy9Bv1WTRi" crossorigin="anonymous"> -</head> -<body class=""> - <?=view("components.navbar")?> - @yield("content") - <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.2/dist/js/bootstrap.bundle.min.js" integrity="sha384-OERcA2EqjJCMA+/3y+gxIOqMEjwtxJY7qPCqsdltbNJuaOe923+mo//f6V8Qbsw3" crossorigin="anonymous"></script> -</body> -</html> diff --git a/TP5/resources/views/simple-data.php b/TP5/resources/views/simple-data.php deleted file mode 100644 index 17bbe514fbf2970fda934a6cb34b98299e6987cf..0000000000000000000000000000000000000000 --- a/TP5/resources/views/simple-data.php +++ /dev/null @@ -1,10 +0,0 @@ -@extends('layouts.page-layout') - -@section('title', '{{ $pageTitle }}') - -@section('content') -<div class="container"> - <h1>{{ $pageTitle }}</h1> - {{ $pageContent }} -</div> -@endsection \ No newline at end of file diff --git a/TP6/.env b/TP6/.env deleted file mode 100644 index 5200165ceea1a9ce0dc91c381b1043a26518932f..0000000000000000000000000000000000000000 --- a/TP6/.env +++ /dev/null @@ -1,4 +0,0 @@ -DB_HOST=localhost -DB_NAME=iut-dev -DB_LOGIN=iut-dev-user -DB_PASSWORD=p73i74KAV8lami2iyIpehE5ozic8GA diff --git a/TP6/TP6_web.pdf b/TP6/TP6_web.pdf deleted file mode 100644 index 1552fc8c46be418e99370219cdaff85deebfec1c..0000000000000000000000000000000000000000 Binary files a/TP6/TP6_web.pdf and /dev/null differ diff --git a/TP6/app/helpers/config.php b/TP6/app/helpers/config.php deleted file mode 100644 index c4a9e47d21a9f3faace1afdc5a6ccdbcd20c5f29..0000000000000000000000000000000000000000 --- a/TP6/app/helpers/config.php +++ /dev/null @@ -1,19 +0,0 @@ -<?php -/** - * @param string $index - * @return string - */ -function config(string $index) : string -{ - $envPath = getcwd() . "/.env"; - if(file_exists($envPath)){ - $index = str_replace('_', '\\_', $index); - $envFile = file_get_contents($envPath); - preg_match("/" . $index . '=(.*?)\n/', $envFile, $matches); - $value = $matches[count($matches) - 1]; - $value = preg_replace('/[^A-Za-z0-9\-]/', '', $value); - return $value; - } else { - return ""; - } -} \ No newline at end of file diff --git a/TP6/app/helpers/views.php b/TP6/app/helpers/views.php deleted file mode 100644 index 2546cdb1d76d4592e6a83c8b497914350cacb3a7..0000000000000000000000000000000000000000 --- a/TP6/app/helpers/views.php +++ /dev/null @@ -1,12 +0,0 @@ -<?php -require_once("app/models/View.php"); -/** - * Charge le contenu d'une vue avec des paramètres. - * @param string $viewName - * @param array $args - * @return string - */ -function view(string $viewName, array $args = []): string -{ - return View::load($viewName, $args); -} \ No newline at end of file diff --git a/TP6/app/models/Database.php b/TP6/app/models/Database.php deleted file mode 100644 index 570f4a95f13f261ef74675375eb89a45d95a3348..0000000000000000000000000000000000000000 --- a/TP6/app/models/Database.php +++ /dev/null @@ -1,39 +0,0 @@ -<?php - -class Database -{ - // 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() - { - $hostname = config("DB_HOST"); - $database = config("DB_NAME"); - $login = config("DB_LOGIN"); - $password = config("DB_PASSWORD"); - $t = self::$tabUTF8; - try { - self::$pdo = new PDO("mysql:host=$hostname;dbname=$database", $login, $password, $t); - self::$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); - } catch (PDOException $e) { - echo "Erreur de connexion : " . $e->getMessage() . "<br>"; - } - } -} - -?> diff --git a/TP6/controller/ControleurAdherent.php b/TP6/controller/ControleurAdherent.php deleted file mode 100644 index 90089f045c7d2b45c8442a1841e820f7e8963532..0000000000000000000000000000000000000000 --- a/TP6/controller/ControleurAdherent.php +++ /dev/null @@ -1,46 +0,0 @@ -<?php -require_once "ControleurObjet.php"; -require_once("models/Adherent.php"); - -class ControleurAdherent extends ControleurObjet -{ - protected static string $object = "Adherent"; - /** - * Charge la page de la liste des adhérents. - * @return string - * @throws Exception - */ - public static function lireAdherents(): string - { - $adherents = Adherent::getAllAdherents(); - $objects = []; - foreach ($adherents as $adherent){ - $object['title'] = $adherent->prenomAdherent . " " . $adherent->nomAdherent; - $object['desc'] = "ID: {$adherent->login}<br>Date d'adhésion: {$adherent->dateAdhesion->format("Y-m-d")}"; - $object['url'] = "index.php?action=lireAdherent&login={$adherent->login}"; - $objects[] = $object; - } - return view('data-grid', [ - 'pageTitle' => 'Liste des adhérents', - 'pageDesc' => 'Voici la liste de tous les adhérents', - 'objects' => $objects - ]); - } - - /** - * Charge la page du détail d'un adhérent. - * @return string - * @throws Exception - */ - public static function lireAdherent(): string - { - if (empty($_GET["login"])) { - die("Le paramètre login n'est pas spécifié."); - } - $adherent = Adherent::getAdherentByLogin($_GET["login"]); - return view('simple-data', [ - 'pageTitle' => 'Information du livre', - 'pageContent' => $adherent->afficher() - ]); - } -} \ No newline at end of file diff --git a/TP6/controller/ControleurLivre.php b/TP6/controller/ControleurLivre.php deleted file mode 100644 index 0f0f651cfe0285eed9b76e2c007d300f21e3b637..0000000000000000000000000000000000000000 --- a/TP6/controller/ControleurLivre.php +++ /dev/null @@ -1,48 +0,0 @@ -<?php -require_once "ControleurObjet.php"; -require_once("models/Livre.php"); - -class ControleurLivre extends ControleurObjet -{ - protected static string $object = "Livre"; - /** - * Charge la page de la liste des adhérents. - * @return string - * @throws Exception - */ - public static function lireLivres(): string - { - $livres = Livre::getAllLivres(); - - $objects = []; - foreach ($livres as $livre){ - $object['title'] = $livre->titre; - $object['desc'] = "ID: {$livre->numLivre}<br>Année de parution: {$livre->anneeParution}"; - $object['url'] = "index.php?action=lireLivre&numLivre={$livre->numLivre}"; - $objects[] = $object; - } - return view('data-grid', [ - 'pageTitle' => 'Liste des livres', - 'pageDesc' => 'Voici la liste de tous les livres', - 'objects' => $objects - ]); - } - - /** - * Charge la page du détail d'un adhérent. - * @return string - * @throws Exception - */ - public static function lireLivre(): string - { - if (empty($_GET["numLivre"])) { - die("Le paramètre numLivre n'est pas spécifié."); - } - $livre = Livre::getLivreByNumLivre($_GET["numLivre"]); - - return view('simple-data', [ - 'pageTitle' => 'Information du livre', - 'pageContent' => $livre->afficher() - ]); - } -} \ No newline at end of file diff --git a/TP6/index.php b/TP6/index.php deleted file mode 100644 index b67a879a97d4d3f0aed164e39ef40c0517e9d72f..0000000000000000000000000000000000000000 --- a/TP6/index.php +++ /dev/null @@ -1,48 +0,0 @@ -<?php -ini_set('display_errors', 1); -ini_set('display_startup_errors', 1); -error_reporting(E_ALL); - -require_once("app/helpers/config.php"); -require_once("app/helpers/strings.php"); -require_once("app/helpers/views.php"); -require_once("app/models/Database.php"); - -require_once("controller/ControleurAuteur.php"); -require_once("controller/ControleurAdherent.php"); - -require_once("controller/ControleurLivre.php"); - -Database::connect(); - -if (empty($_REQUEST["action"])) { - echo ControleurAuteur::lireAuteurs(); -} else { - // C'est plus long que get_class_methods mais c'est moins sujet à problèmes. - switch ($_REQUEST["action"]){ - case "lireAuteur": - echo ControleurAuteur::lireAuteur(); - break; - case "lireAuteurs": - echo ControleurAuteur::lireAuteurs(); - break; - case "creerObjet": - echo ControleurObjet::creerObjet(); - break; - case "lireAdherent": - echo ControleurAdherent::lireAdherent(); - break; - case "lireAdherents": - echo ControleurAdherent::lireAdherents(); - break; - case "lireLivre": - echo ControleurLivre::lireLivre(); - break; - case "lireLivres": - echo ControleurLivre::lireLivres(); - break; - default: - echo ControleurAuteur::lireAuteur(); - break; - } -} diff --git a/TP6/models/Adherent.php b/TP6/models/Adherent.php deleted file mode 100644 index 58668a7f6f7f91b275d599571e2b97ed9d5a928e..0000000000000000000000000000000000000000 --- a/TP6/models/Adherent.php +++ /dev/null @@ -1,104 +0,0 @@ -<?php -require_once "Objet.php"; - -class Adherent extends Objet -{ - protected string $login; - protected string $mdp; - protected string $nomAdherent; - protected string $prenomAdherent; - protected string $email; - protected DateTime $dateAdhesion; - protected int $numCategorie; - - /** - * @param string $login - * @param string $mdp - * @param string $nomAdherent - * @param string $prenomAdherent - * @param string $email - * @param DateTime $dateAdhesion - * @param int $numCategorie - */ - public function __construct(string $login, string $mdp, string $nomAdherent, string $prenomAdherent, string $email, DateTime $dateAdhesion, int $numCategorie) - { - $this->login = $login; - $this->mdp = $mdp; - $this->nomAdherent = $nomAdherent; - $this->prenomAdherent = $prenomAdherent; - $this->email = $email; - $this->dateAdhesion = $dateAdhesion; - $this->numCategorie = $numCategorie; - } - - /** - * @return array - * @throws Exception - */ - public static function getAllAdherents(): array - { - // écriture de la requête - $requete = "SELECT * FROM Adherent;"; - // 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_ASSOC); - $resultat = $resultat->fetchAll(); - - $tableau = array(); - foreach ($resultat as $row){ - $tableau[] = new Adherent($row['login'], - $row['mdp'], - $row['nomAdherent'], - $row['prenomAdherent'], - $row['email'], - new DateTime($row['dateAdhesion']), - $row['numCategorie']); - } - return $tableau; - } - - /** - * Trouve un adhérent selon son login unique. - * @param $login - * @return Adherent - * @throws Exception - */ - public static function getAdherentByLogin($login) : Adherent - { - // écriture de la requête - $requetePreparee = "SELECT * FROM Adherent WHERE login = :login;"; - $req_prep = Database::pdo()->prepare($requetePreparee); - // le tableau des valeurs - $valeurs = array("login" => $login); - $response = null; - try { - // envoi de la requête - $req_prep->execute($valeurs); - // traitement de la réponse - $req_prep->setFetchmode(PDO::FETCH_ASSOC); - // récupération de l'auteur - $row = $req_prep->fetch(); - $response = new Adherent($row['login'], - $row['mdp'], - $row['nomAdherent'], - $row['prenomAdherent'], - $row['email'], - new DateTime($row['dateAdhesion']), - $row['numCategorie']); - - } catch (PDOException $e) { - echo $e->getMessage(); - } - return $response; - } - - /** - * @return string - */ - public function afficher(): string - { - return "<p>" . $this->prenomAdherent . " " . $this->nomAdherent . " a rejoint le " - .$this->dateAdhesion->format('Y-m-d H:i:s'); - } -} \ No newline at end of file diff --git a/TP6/models/Categorie.php b/TP6/models/Categorie.php deleted file mode 100644 index cc90eab92b835a565e0cfa153aae7225cd447326..0000000000000000000000000000000000000000 --- a/TP6/models/Categorie.php +++ /dev/null @@ -1,78 +0,0 @@ -<?php - -/** - * - */ -class Categorie -{ - private int $numCategorie; - private string $libelle; - private int $nbLivresAutorises; - - /** - * @param int $numCategorie - * @param string $libelle - * @param int $nbLivresAutorises - */ - public function __construct(int $numCategorie, string $libelle, int $nbLivresAutorises) - { - $this->numCategorie = $numCategorie; - $this->libelle = $libelle; - $this->nbLivresAutorises = $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 diff --git a/TP6/models/DateEmprunt.php b/TP6/models/DateEmprunt.php deleted file mode 100644 index c8aef9679609f8cbbb69a82be13c8cf37ab26c28..0000000000000000000000000000000000000000 --- a/TP6/models/DateEmprunt.php +++ /dev/null @@ -1,41 +0,0 @@ -<?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 diff --git a/TP6/models/Genre.php b/TP6/models/Genre.php deleted file mode 100644 index 2c953d485903e032e9c2d92a3c52af154d32d8ce..0000000000000000000000000000000000000000 --- a/TP6/models/Genre.php +++ /dev/null @@ -1,49 +0,0 @@ -<?php - -class Genre -{ - private int $numGenre; - private string $intitule; - - /** - * @param int $numGenre - * @param string $intitule - */ - public function __construct(int $numGenre, string $intitule) - { - $this->numGenre = $numGenre; - $this->intitule = $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 diff --git a/TP6/models/Livre.php b/TP6/models/Livre.php deleted file mode 100644 index bde6024f752931bccd03f7fef748ea6955b78cea..0000000000000000000000000000000000000000 --- a/TP6/models/Livre.php +++ /dev/null @@ -1,75 +0,0 @@ -<?php -require_once "Objet.php"; - -class Livre extends Objet -{ - protected int $numLivre; - protected string $titre; - protected int $anneeParution; - protected int $numGenre; - - /** - * @param int $numLivre - * @param string $titre - * @param int $anneeParution - * @param int $numGenre - */ - public function __construct(int $numLivre, string $titre, int $anneeParution, int $numGenre) - { - $this->numLivre = $numLivre; - $this->titre = $titre; - $this->anneeParution = $anneeParution; - $this->numGenre = $numGenre; - } - - /** - * @return array - */ - public static function getAllLivres(): array - { - $query = Database::pdo()->query("SELECT * FROM Livre"); - $query->setFetchmode(PDO::FETCH_ASSOC); - $queryResult = $query->fetchAll(); - - $tableau = array(); - foreach ($queryResult as $row) { - $tableau[] = new Livre($row['numLivre'], - $row['titre'], - $row['anneeParution'], - $row['numGenre']); - } - return $tableau; - } - - /** - * @param int $numLivre - * @return Livre - */ - public static function getLivreByNumLivre(int $numLivre): Livre - { - $query = Database::pdo()->prepare("SELECT * FROM Livre WHERE numLivre = :numLivre"); - $response = null; - try { - // envoi de la requête - $query->execute(['numLivre' => $numLivre]); - $query->setFetchmode(PDO::FETCH_ASSOC); - $queryResult = $query->fetch(); - $response = new Livre($queryResult['numLivre'], - $queryResult['titre'], - $queryResult['anneeParution'], - $queryResult['numGenre']); - } catch (PDOException $e) { - echo $e->getMessage(); - } - return $response; - } - - /** - * @return string - */ - public function afficher(): string - { - return "<p>" . $this->titre . " est paru en " - . $this->anneeParution; - } -} \ No newline at end of file diff --git a/TP6/models/Nationalite.php b/TP6/models/Nationalite.php deleted file mode 100644 index aee6ad6413dab3ca78624c8d508dab4189f71951..0000000000000000000000000000000000000000 --- a/TP6/models/Nationalite.php +++ /dev/null @@ -1,36 +0,0 @@ -<?php - -class Nationalite -{ - private int $numNationalite; - private string $pays; - private string $abrege; - - /** - * @param int $numNationalite - * @param string $pays - * @param string $abrege - */ - public function __construct(int $numNationalite, string $pays, string $abrege) - { - $this->numNationalite = $numNationalite; - $this->pays = $pays; - $this->abrege = $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 diff --git a/TP7_web.pdf b/TP7_web.pdf new file mode 100644 index 0000000000000000000000000000000000000000..62a5cd86a149d594867cfc414bed5b186d5cc683 Binary files /dev/null and b/TP7_web.pdf differ diff --git a/app/helpers/config.php b/app/helpers/config.php new file mode 100644 index 0000000000000000000000000000000000000000..cfc442cb10283dd75c858729b77f956a55046ad0 --- /dev/null +++ b/app/helpers/config.php @@ -0,0 +1,26 @@ +<?php +/** + * Permet de récupérer un paramètre du fichier config.php + * @param string $configIndex + * @return mixed + */ +function config(string $configIndex) : mixed +{ + $configPath = getcwd() . "/config.php"; + if(file_exists($configPath)){ + $config = include $configPath; + $indexes = explode(".", $configIndex); + + $tempConf = $config; + foreach ($indexes as $index){ + if(array_key_exists($index, $tempConf)){ + $tempConf = $tempConf[$index]; + }else{ + return null; + } + } + return $tempConf; + } else { + return null; + } +} \ No newline at end of file diff --git a/TP6/app/helpers/strings.php b/app/helpers/strings.php similarity index 100% rename from TP6/app/helpers/strings.php rename to app/helpers/strings.php diff --git a/TP4/ex1/app/helpers/views.php b/app/helpers/views.php similarity index 100% rename from TP4/ex1/app/helpers/views.php rename to app/helpers/views.php diff --git a/TP4/ex1/app/models/Database.php b/app/models/Database.php similarity index 55% rename from TP4/ex1/app/models/Database.php rename to app/models/Database.php index 570f4a95f13f261ef74675375eb89a45d95a3348..0cbec62551476146720e827232a492fead5dd07f 100644 --- a/TP4/ex1/app/models/Database.php +++ b/app/models/Database.php @@ -3,29 +3,25 @@ class Database { // 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"); + static private array $tabUTF8 = array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"); // l'attribut static qui matérialisera la connexion - static private $pdo; + static private PDO $pdo; // le getter public de cet attribut - static public function pdo() + static public function pdo(): PDO { return self::$pdo; } // la fonction static de connexion qui initialise $pdo et lance la tentative de connexion - static public function connect() + static public function connect(): void { - $hostname = config("DB_HOST"); - $database = config("DB_NAME"); - $login = config("DB_LOGIN"); - $password = config("DB_PASSWORD"); + $hostname = config("database.host"); + $database = config("database.name"); + $login = config("database.login"); + $password = config("database.password"); $t = self::$tabUTF8; try { self::$pdo = new PDO("mysql:host=$hostname;dbname=$database", $login, $password, $t); @@ -36,4 +32,4 @@ class Database } } -?> + diff --git a/TP6/app/models/View.php b/app/models/View.php similarity index 99% rename from TP6/app/models/View.php rename to app/models/View.php index 026feb9efcf27c6d9a360a29ce7a996d7b75f7a1..6835b80cc422f442dc5533f9bd7052d2d136cf84 100644 --- a/TP6/app/models/View.php +++ b/app/models/View.php @@ -29,7 +29,6 @@ class View /** * S'occuper de remplir la template * @param string $viewPath - * @param array $args * @return string */ public static function parse(string $viewPath): string diff --git a/config.php b/config.php new file mode 100644 index 0000000000000000000000000000000000000000..c2af7586f4148209e51c762b1b831331849ffe2d --- /dev/null +++ b/config.php @@ -0,0 +1,7 @@ +<?php +return ['database' => [ + 'host' => 'localhost', + 'name' => 'iut-dev', + 'login' => 'iut-dev-user', + 'password' => 'p73i74KAV8lami2iyIpehE5ozic8GA' +]]; \ No newline at end of file diff --git a/TP5/controller/ControleurAdherent.php b/controller/ControleurAdherent.php similarity index 87% rename from TP5/controller/ControleurAdherent.php rename to controller/ControleurAdherent.php index 90089f045c7d2b45c8442a1841e820f7e8963532..390ab02eb069c8b2897ffcaf5f1d0350ee89cd83 100644 --- a/TP5/controller/ControleurAdherent.php +++ b/controller/ControleurAdherent.php @@ -16,8 +16,8 @@ class ControleurAdherent extends ControleurObjet $objects = []; foreach ($adherents as $adherent){ $object['title'] = $adherent->prenomAdherent . " " . $adherent->nomAdherent; - $object['desc'] = "ID: {$adherent->login}<br>Date d'adhésion: {$adherent->dateAdhesion->format("Y-m-d")}"; - $object['url'] = "index.php?action=lireAdherent&login={$adherent->login}"; + $object['desc'] = "ID: $adherent->login<br>Date d'adhésion: {$adherent->dateAdhesion->format("Y-m-d")}"; + $object['url'] = "index.php?action=lireAdherent&login=$adherent->login"; $objects[] = $object; } return view('data-grid', [ @@ -39,7 +39,7 @@ class ControleurAdherent extends ControleurObjet } $adherent = Adherent::getAdherentByLogin($_GET["login"]); return view('simple-data', [ - 'pageTitle' => 'Information du livre', + 'pageTitle' => "Information de l'adhérent", 'pageContent' => $adherent->afficher() ]); } diff --git a/TP6/controller/ControleurAuteur.php b/controller/ControleurAuteur.php similarity index 86% rename from TP6/controller/ControleurAuteur.php rename to controller/ControleurAuteur.php index 2fadad633daeebdf6ab182a228d6a4e70cd312ab..99e02c4fab4572abefb1894322b33b0ebed99edb 100644 --- a/TP6/controller/ControleurAuteur.php +++ b/controller/ControleurAuteur.php @@ -16,8 +16,8 @@ class ControleurAuteur extends ControleurObjet $objects = []; foreach ($auteurs as $auteur){ $object['title'] = $auteur->prenom . " " . $auteur->nom; - $object['desc'] = "ID: {$auteur->numAuteur}<br>Date de naissance: {$auteur->anneeNaissance}"; - $object['url'] = "index.php?action=lireAuteur&numAuteur={$auteur->numAuteur}"; + $object['desc'] = "ID: $auteur->numAuteur<br>Date de naissance: $auteur->anneeNaissance"; + $object['url'] = "index.php?action=lireAuteur&numAuteur=$auteur->numAuteur"; $objects[] = $object; } return view('data-grid', [ @@ -38,7 +38,7 @@ class ControleurAuteur extends ControleurObjet } $auteur = Auteur::getAuteurByNum($_GET["numAuteur"]); return view('simple-data', [ - 'pageTitle' => 'Information du livre', + 'pageTitle' => "Information de l'auteur", 'pageContent' => $auteur->afficher() ]); } diff --git a/TP5/controller/ControleurLivre.php b/controller/ControleurLivre.php similarity index 91% rename from TP5/controller/ControleurLivre.php rename to controller/ControleurLivre.php index 0f0f651cfe0285eed9b76e2c007d300f21e3b637..f3ab48a74dfefd34452e8ce5815f60f36bc63fca 100644 --- a/TP5/controller/ControleurLivre.php +++ b/controller/ControleurLivre.php @@ -17,8 +17,8 @@ class ControleurLivre extends ControleurObjet $objects = []; foreach ($livres as $livre){ $object['title'] = $livre->titre; - $object['desc'] = "ID: {$livre->numLivre}<br>Année de parution: {$livre->anneeParution}"; - $object['url'] = "index.php?action=lireLivre&numLivre={$livre->numLivre}"; + $object['desc'] = "ID: $livre->numLivre<br>Année de parution: $livre->anneeParution"; + $object['url'] = "index.php?action=lireLivre&numLivre=$livre->numLivre"; $objects[] = $object; } return view('data-grid', [ diff --git a/TP6/controller/ControleurObjet.php b/controller/ControleurObjet.php similarity index 100% rename from TP6/controller/ControleurObjet.php rename to controller/ControleurObjet.php diff --git a/index.php b/index.php new file mode 100644 index 0000000000000000000000000000000000000000..cb941eeda0d1c1e0084eeaeadd0059111049780e --- /dev/null +++ b/index.php @@ -0,0 +1,36 @@ +<?php +ini_set('display_errors', 1); +ini_set('display_startup_errors', 1); +error_reporting(E_ALL); + +require_once("app/helpers/config.php"); +require_once("app/helpers/strings.php"); +require_once("app/helpers/views.php"); +require_once("app/models/Database.php"); + +require_once("controller/ControleurAuteur.php"); +require_once("controller/ControleurAdherent.php"); + +require_once("controller/ControleurLivre.php"); + +Database::connect(); + +if (empty($_REQUEST["action"])) { + echo ControleurAuteur::lireAuteurs(); +} else { + // C'est plus long que get_class_methods mais c'est moins sujet à problèmes. + try { + echo match ($_REQUEST["action"]) { + "lireAuteur" => ControleurAuteur::lireAuteur(), + "lireAuteurs" => ControleurAuteur::lireAuteurs(), + "creerObjet" => ControleurObjet::creerObjet(), + "lireAdherent" => ControleurAdherent::lireAdherent(), + "lireAdherents" => ControleurAdherent::lireAdherents(), + "lireLivre" => ControleurLivre::lireLivre(), + "lireLivres" => ControleurLivre::lireLivres(), + default => ControleurAuteur::lireAuteur(), + }; + } catch (Exception $e) { + echo "Erreur lors de l'affichage de la page: " . $e->getMessage(); + } +} diff --git a/TP4/ex1/models/Adherent.php b/models/Adherent.php similarity index 100% rename from TP4/ex1/models/Adherent.php rename to models/Adherent.php diff --git a/TP6/models/Auteur.php b/models/Auteur.php similarity index 100% rename from TP6/models/Auteur.php rename to models/Auteur.php diff --git a/TP4/ex1/models/Categorie.php b/models/Categorie.php similarity index 100% rename from TP4/ex1/models/Categorie.php rename to models/Categorie.php diff --git a/TP4/ex1/models/DateEmprunt.php b/models/DateEmprunt.php similarity index 100% rename from TP4/ex1/models/DateEmprunt.php rename to models/DateEmprunt.php diff --git a/TP4/ex1/models/Genre.php b/models/Genre.php similarity index 100% rename from TP4/ex1/models/Genre.php rename to models/Genre.php diff --git a/TP4/ex1/models/Livre.php b/models/Livre.php similarity index 100% rename from TP4/ex1/models/Livre.php rename to models/Livre.php diff --git a/TP4/ex1/models/Nationalite.php b/models/Nationalite.php similarity index 100% rename from TP4/ex1/models/Nationalite.php rename to models/Nationalite.php diff --git a/TP6/models/Objet.php b/models/Objet.php similarity index 92% rename from TP6/models/Objet.php rename to models/Objet.php index f770e2b8cf6d77b2b1f9b6d8e944f4de73272a27..ad2df9037c695947eb8ef16a47b85eb4d0c24f1e 100644 --- a/TP6/models/Objet.php +++ b/models/Objet.php @@ -54,11 +54,11 @@ class Objet // Maintenant on va vérifier que la table existe try{ - $tableExistsQuery = Database::pdo()->query("SELECT 1 FROM {$tableName} LIMIT 1"); + $tableExistsQuery = Database::pdo()->query("SELECT 1 FROM $tableName LIMIT 1"); } catch (PDOException $e) { return [ "status" => "fail", - "message" => "La table {$tableName} ne semble pas exister.", + "message" => "La table $tableName ne semble pas exister.", "pdoError" => $e ]; } @@ -76,7 +76,7 @@ class Objet } // On prépare la requête - $queryString = ("INSERT INTO {$tableName} (" . implode(", ", array_keys($columns)) + $queryString = ("INSERT INTO $tableName (" . implode(", ", array_keys($columns)) . ") VALUES (:" . implode(", :", array_keys($columns)) . ")"); $insertQuery = Database::pdo()->prepare($queryString); try{ @@ -108,7 +108,7 @@ class Objet ]; }else{ try{ - $query = Database::pdo()->query("DESCRIBE {$tableName}"); + $query = Database::pdo()->query("DESCRIBE $tableName"); $columns = $query->fetchAll(PDO::FETCH_ASSOC); } catch (PDOException $e) { return [ diff --git a/TP6/resources/css/styles.css b/resources/css/styles.css similarity index 100% rename from TP6/resources/css/styles.css rename to resources/css/styles.css diff --git a/TP6/resources/views/components/navbar.php b/resources/views/components/navbar.php similarity index 97% rename from TP6/resources/views/components/navbar.php rename to resources/views/components/navbar.php index 33f52ea807b338ae6671a415d46888c868f7f378..00c80594d39d8b534bc244b8a02c9edb16ee63a6 100644 --- a/TP6/resources/views/components/navbar.php +++ b/resources/views/components/navbar.php @@ -27,7 +27,7 @@ <script type="text/javascript"> const urlParams = new URLSearchParams(window.location.search); let links = document.querySelectorAll('a[href="?action='+urlParams.get("action")+'"]'); - for (var i=0; i<links.length; i++){ + for (let i=0; i<links.length; i++){ links[i].classList.add("active"); } </script> \ No newline at end of file diff --git a/TP6/resources/views/data-grid.php b/resources/views/data-grid.php similarity index 100% rename from TP6/resources/views/data-grid.php rename to resources/views/data-grid.php diff --git a/TP6/resources/views/formulaire-creation-objet.php b/resources/views/formulaire-creation-objet.php similarity index 100% rename from TP6/resources/views/formulaire-creation-objet.php rename to resources/views/formulaire-creation-objet.php diff --git a/TP6/resources/views/layouts/page-layout.php b/resources/views/layouts/page-layout.php similarity index 100% rename from TP6/resources/views/layouts/page-layout.php rename to resources/views/layouts/page-layout.php diff --git a/TP6/resources/views/simple-data.php b/resources/views/simple-data.php similarity index 100% rename from TP6/resources/views/simple-data.php rename to resources/views/simple-data.php