Passed
Push — master ( e8ae10...8805bf )
by Anthony
02:56
created

Database::into()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 5
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 5
rs 9.4285
cc 1
eloc 3
nc 1
nop 1
1
<?php
2
	namespace core;
3
4
	use core\HTML\flashmessage\FlashMessage;
5
	use PDO;
6
7 View Code Duplication
	class Database extends Querybuilder{
0 ignored issues
show
Duplication introduced by
This class seems to be duplicated in your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
8
		private $db_type;
9
		private $db_name;
10
		private $db_user;
11
		private $db_pass;
12
		private $db_host;
13
		private $dbc;
14
15
16
17
		//-------------------------- CONSTRUCTEUR ----------------------------------------------------------------------------//
18
		public function __construct($db_type, $db_name, $db_user, $db_pass, $db_host) {
19
			$this->db_type = $db_type;
20
			$this->db_name = $db_name;
21
			$this->db_user = $db_user;
22
			$this->db_pass = $db_pass;
23
			$this->db_host = $db_host;
24
		}
25
		//-------------------------- FIN CONSTRUCTEUR ----------------------------------------------------------------------------//
26
27
28
29
		//-------------------------- GETTER ----------------------------------------------------------------------------//
30
		/**
31
		 * function qui fait la connexion a la bdd ne peu etre appelee que dans la classe
32
		 * @return PDO
33
		 */
34
		private function getPdo() {
35
			if ($this->dbc === null) {
36
				$dbc = new PDO($this->db_type.':host='.$this->db_host.';dbname='.$this->db_name, $this->db_user, $this->db_pass);
37
				$dbc->exec("set names utf8");
38
				$this->dbc = $dbc;
39
			}
40
			return $this->dbc;
41
		}
42
		//-------------------------- FIN GETTER ----------------------------------------------------------------------------//
43
44
		//-------------------------- FUNCTION QUI FONT DES REQUETES SUR LA BDD --------------------------------------------//
45
		/**
46
		 * effectue une requete en selectr dans la BDD, si ok on renvoit les donnees sinon on renvoi une erreur
47
		 * @param $req
48
		 * @return array
49
		 */
50
		public function query($req) {
51
			$query = $this->getPdo()->query($req);
52
53
			if ($query) {
54
				$obj = $query->fetchAll(PDO::FETCH_OBJ);
55
				return $obj;
56
			}
57
			else {
58
				FlashMessage::setFlash("Une erreur est survenue en executant cette requette : ".$req);
59
			}
60
		}
61
62
		/**
63
		 * fonction qui prepare une requete et qui l'envoi, marche pour insert et update et delete
64
		 * @param $req -> la req a executer
65
		 * @param $value -> le ou les tableaux de valeurs
66
		 */
67
		public function prepare($req, $value) {
68
			$query = $this->getPdo()->prepare($req);
69
			//si on a plusieurs tableaux
70
			if (array_key_exists(0, $value)) {
71
				foreach ($value as $val) {
72
					if (!$query->execute($val)) {
73
						$err = true;
74
					}
75
				}
76
			}
77
			else {
78
				if (!$query->execute($value)) {
79
					$err = true;
80
				}
81
			}
82
83
			//si on a une erreur on renvoi un message
84
			if (isset($err)) {
85
				FlashMessage::setFlash("Une erreur est survenue en executant cette requette : ".$req);
86
			}
87
		}
88
89
		/**
90
		 * pour savoir si une valeur sur un champ précis existe deja en bdd, renvoi true si vrai
91
		 * @param $table
92
		 * @param $champ
93
		 * @param $value
94
		 * @return boolean|null
95
		 */
96
		public function rechercherEgalite($table, $champ, $value, $id_table = null, $id = null) {
97
			if ($id == null) {
98
				$query = $this->getPdo()->query("SELECT COUNT($champ) as nb FROM $table WHERE $champ LIKE '$value'");
99
			}
100
			else {
101
				$query = $this->getPdo()->query("SELECT COUNT($champ) as nb FROM $table WHERE $champ LIKE '$value' AND $id_table != $id");
102
			}
103
104
			if (count($query) > 0) {
105
				foreach ($query as $obj) {
106
					$nb = $obj["nb"];
107
				}
108
109
				if ((isset($nb)) && ($nb != 0)) return true;
110
			}
111
			else {
112
				return false;
113
			}
114
		}
115
		//-------------------------- FIN FUNCTION QUI FONT DES REQUETES SUR LA BDD --------------------------------------------//
116
117
118
		/**
119
		 * tester si une table dans la base donnee existe
120
		 * @param string $table definit la table pour laquelle on doit tester l'existance
121
		 * @return boolean
122
		 */
123
		public function TestTableExist($table) {
124
			$query = $this->getPdo()->query("SHOW TABLES LIKE '$table'");
125
126
			if ($query->rowCount() > 0) {
127
				return true;
128
			}
129
			else {
130
				return false;
131
			}
132
		}
133
134
		public function quote($quote) {
135
			return $this->getPdo()->quote($quote);
136
		}
137
138
		public function lastInsertId() {
139
			return $this->getPdo()->lastInsertId();
140
		}
141
	}