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.2KB

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