Créé dans le cadre du projet de fin d'année de la promo 2018 de CIR2 de l'ISEN Brest/Rennes, le Burger Quizz est une adaptation numérique du jeu télévisé éponyme, plus précisément d'une épreuve spécifique de ce jeu : le "Sel ou Poivre".

class.connector.php 9.1KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209
  1. <?php
  2. /*******************************************************************************
  3. * Classe Connector *
  4. * Auteur : Brendan Abolivier *
  5. * Fonction : Permettre une gestion plus facile et plus claire de la connexion *
  6. * au serveur MySQL *
  7. * *
  8. * Attribut : *
  9. * $bdd : objet PDO *
  10. * *
  11. * Méthodes : *
  12. * __construct() *
  13. * Select() *
  14. * Insert() *
  15. * Update() *
  16. *******************************************************************************/
  17. class Connector {
  18. private $bdd;
  19. /*****************************************************************************
  20. * Méthode __construct() *
  21. * Fonction : Constructeur, initie la connexion à la base de données via PDO, *
  22. * en utilisant les paramètres définis dans le fichier params.cfg *
  23. * par l'utilisateur *
  24. * *
  25. * Paramètres : Aucun *
  26. * *
  27. * Retour : Aucun *
  28. *****************************************************************************/
  29. function __construct() {
  30. $params = file_get_contents("../params.cfg");
  31. preg_match_all('/db_(.+)\: (.+)/', $params, $matches);
  32. $dbconnect = array();
  33. for($i = 0; $i < sizeof($matches[0]); $i++) {
  34. $dbconnect[$matches[1][$i]] = $matches[2][$i];
  35. }
  36. $this->bdd = new PDO("mysql:host=".$dbconnect["host"].";dbname="
  37. .$dbconnect["dbname"], $dbconnect["user"], $dbconnect["pass"]);
  38. $this->bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  39. }
  40. /*****************************************************************************
  41. * Méthode Select() *
  42. * Fonction : Effectue une insertion dans la base de données *
  43. * *
  44. * Paramètres : *
  45. * $fields (String) : Champs à sélectionner, séparés par une virgule *
  46. * $tables (String) : Tables dans lesquelles effectuer les champs, séparées *
  47. * par une virgule *
  48. * $options (Array (mixed)) : Tableau contenant les différentes clauses de *
  49. * (mixed : Array, String) | la requête. *
  50. * Exemple de tableau : *
  51. * $options = array( *
  52. * "where" => array( *
  53. * array("foo", "=", "bar"), *
  54. * array("blbl", ">", 5) *
  55. * ), *
  56. * "order by" => array("foo", "desc"), *
  57. * "limit" => array(0, 10) // Ou array(10) *
  58. * ); *
  59. * Si cet argument n'est pas passé, la méthode s'exécute *
  60. * avec un tableau vide. *
  61. * *
  62. * Retour : *
  63. * Tableau contenant les résultats renvoyés par la base de données *
  64. * null si la requête a renvoyé un ensemble vide *
  65. * *
  66. * Exceptions : *
  67. * wrong_arg_nmbr_where : Nombre d'arguments insuffisant sur une partie de *
  68. * la clause WHERE *
  69. * wrong_arg_nmbr_order_by : Nombre d'arguments insuffisant sur la clause *
  70. * ORDER BY *
  71. * wrong_arg_numbr_limit : Nombre d'arguments insuffisant sur la clause *
  72. * LIMIT *
  73. * unknown_arg : Le tableau contient une clause inconnue ou non supportée *
  74. *****************************************************************************/
  75. function Select($fields, $tables, $options = array()) {
  76. $request = "SELECT $fields FROM $tables ";
  77. $arrayVerif = array();
  78. foreach($options as $name=>$value) {
  79. if(($upName = strtoupper($name)) == "WHERE") {
  80. $whereClause = " $upName ";
  81. foreach($value as $array) {
  82. if(sizeof($array) != 3 && sizeof($array) != 4) {
  83. throw new Exception('wrong_arg_nmbr_where');
  84. }
  85. if(sizeof($array) == 3) {
  86. $whereClause .= $array[0]." ".$array[1]." ? AND ";
  87. array_push($arrayVerif, $array[2]);
  88. } else {
  89. $whereClause .= $array[0]." ".$array[1]." ".$array[2]." AND ";
  90. }
  91. }
  92. $request .= substr($whereClause, 0, -5);
  93. } else if(($upName = strtoupper($name)) == "ORDER BY") {
  94. if(sizeof($value) != 2 && substr($value[0], -2) != "()") {
  95. throw new Exception('wrong_arg_nmbr_order_by');
  96. }
  97. $request .= " ".$upName." ".implode(' ', $value);
  98. } else if(($upName = strtoupper($name)) == "LIMIT") {
  99. if(sizeof($value) == 1) {
  100. // La colonne "limit" ne contient qu'un nombre de champs
  101. $request .= " $upName ".$value[0];
  102. } else if(sizeof($value) == 2) {
  103. // La colonne "limit" contient un index de départ et un nombre de champs
  104. $request .= " $upName ".$value[0].",".$value[1];
  105. } else {
  106. throw new Exception('wrong_arg_numbr_limit');
  107. }
  108. } else {
  109. throw new Exception('unknown_arg');
  110. }
  111. }
  112. $stmt = $this->bdd->prepare($request);
  113. if($stmt->execute($arrayVerif)) {
  114. return $stmt->fetchAll();
  115. } else {
  116. return null;
  117. }
  118. }
  119. /*****************************************************************************
  120. * Méthode Insert() *
  121. * Fonction : Effectue une insertion dans la base de données *
  122. * *
  123. * Paramètres : *
  124. * $table (String) : Table dans laquelle effectuer l'insertion *
  125. * $values (Array (String)) : Valeurs à insérer dans la table (tableau *
  126. * associatif) *
  127. * *
  128. * Retour : Aucun *
  129. *****************************************************************************/
  130. function Insert($table, $values) {
  131. $request = "INSERT INTO $table(";
  132. $valeurs = "VALUES(";
  133. $arrayVerif = array();
  134. foreach($values as $name=>$value) {
  135. $request .= $name.",";
  136. $valeurs .= "?,";
  137. array_push($arrayVerif, $value);
  138. }
  139. $request = substr($request, 0, -1).") ".substr($valeurs, 0, -1).")";
  140. $stmt = $this->bdd->prepare($request);
  141. $stmt->execute($arrayVerif);
  142. }
  143. /*****************************************************************************
  144. * Méthode Update() *
  145. * Fonction : Modifie une ou plusieurs valeur(s) dans la base de données *
  146. * *
  147. * Paramètres : *
  148. * $table (String) : Table dans laquelle effectuer la mise à jour *
  149. * $update (Array (mixed)) : Tableau contenant la (ou les) valeur(s) à *
  150. * (mixed : Array, String)| modifier et la clause WHERE correspondante *
  151. * *
  152. * Retour : Aucun *
  153. *****************************************************************************/
  154. function Update($table, $update) {
  155. $request = "UPDATE $table SET ";
  156. $arrayVerif = array();
  157. foreach($update['set'] as $name=>$value) {
  158. $request .= $name."=?,";
  159. array_push($arrayVerif, $value);
  160. }
  161. $request = substr($request, 0, -1)." WHERE ";
  162. foreach($update['where'] as $value) {
  163. $request .= $value[0].$value[1]."? AND ";
  164. array_push($arrayVerif, $value[2]);
  165. }
  166. $request = substr($request, 0, -5);
  167. $stmt = $this->bdd->prepare($request);
  168. $stmt->execute($arrayVerif);
  169. }
  170. /*****************************************************************************
  171. * Méthode beginTransaction() *
  172. * Fonction : Initie une transaction MySQL *
  173. * *
  174. * Paramètres : Aucun *
  175. * *
  176. * Retour : Aucun *
  177. *****************************************************************************/
  178. function beginTransaction() {
  179. $this->bdd->beginTransaction();
  180. }
  181. /*****************************************************************************
  182. * Méthode commit() *
  183. * Fonction : Publie les modifications sur le serveur MySQL et ferme la *
  184. * transaction en cours *
  185. * *
  186. * Paramètres : Aucun *
  187. * *
  188. * Retour : Aucun *
  189. *****************************************************************************/
  190. function commit() {
  191. $this->bdd->commit();
  192. }
  193. }