Subversion Repositories Applications.gtt

Rev

Rev 10 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 10 Rev 14
Line 1... Line 1...
1
<?php
1
<?php
Line 2... Line 2...
2
 
2
 
3
abstract class aGttSql {
3
abstract class aGttSql {
4
	
4
 
5
	/*** Attributs : */
5
	/*** Attributs : */
6
	private $base_de_donnees = GTT_BDD_NOM;
6
	private $base_de_donnees = GTT_BDD_NOM;
7
	protected $table_nom;
7
	protected $table_nom;
8
	protected $correspondance;
8
	protected $correspondance;
9
	
9
 
10
	/*** Accesseurs : */
10
	/*** Accesseurs : */
11
	
11
 
12
	// Base De Donnees
12
	// Base De Donnees
13
	function getBaseDeDonnees()
13
	function getBaseDeDonnees()
14
	{
14
	{
15
		return $this->base_de_donnees;
15
		return $this->base_de_donnees;
Line 34... Line 34...
34
	}
34
	}
35
	function setCorrespondance($c)
35
	function setCorrespondance($c)
36
	{
36
	{
37
		$this->dao_correspondance = $c;
37
		$this->dao_correspondance = $c;
38
	}
38
	}
39
		
39
 
40
	/*** Méthodes : */
40
	/*** Méthodes : */
41
	
41
 
42
    /** Instancie un objet utilisateur à partir d'un enregistrement issu de la base de donnée ou l'inverse.
42
    /** Instancie un objet utilisateur à partir d'un enregistrement issu de la base de donnée ou l'inverse.
43
	* Cette métohode permet de s'abstraire des noms des champs présent dans la base de donnée.
43
	* Cette métohode permet de s'abstraire des noms des champs présent dans la base de donnée.
44
	*/
44
	*/
45
	protected function basculerEnregistrementObjet($donnees, $instancier = false)
45
	protected function basculerEnregistrementObjet($donnees, $instancier = false)
46
	{ 
46
	{
47
		$classe = get_class($this);
47
		$classe = get_class($this);
48
		if (is_array($donnees)) {
48
		if (is_array($donnees)) {
49
			if ($instancier) {
49
			if ($instancier) {
50
				foreach ($this->getCorrespondance() as $champ => $attribut) {
50
				foreach ($this->getCorrespondance() as $champ => $attribut) {
51
					if (isset($donnees[$champ]) && !is_null($donnees[$champ])) {
51
					if (isset($donnees[$champ]) && !is_null($donnees[$champ])) {
Line 66... Line 66...
66
		} else if ($donnees instanceof $classe) {
66
		} else if ($donnees instanceof $classe) {
67
			$enregistrement = array();
67
			$enregistrement = array();
68
			foreach ($this->getCorrespondance() as $champ => $attribut) {
68
			foreach ($this->getCorrespondance() as $champ => $attribut) {
69
				$methode = 'get'.str_replace(' ', '', ucwords(str_replace('_', ' ', $attribut)));
69
				$methode = 'get'.str_replace(' ', '', ucwords(str_replace('_', ' ', $attribut)));
70
				if (method_exists($donnees, $methode)) {
70
				if (method_exists($donnees, $methode)) {
71
					if ($donnees->$methode()) {
71
					if (!is_null($donnees->$methode())) {
72
				 		$enregistrement[$champ] = $donnees->$methode();
72
				 		$enregistrement[$champ] = $donnees->$methode();
73
					}
73
					}
74
				}
74
				}
75
			}
75
			}
76
			return $enregistrement;
76
			return $enregistrement;
77
		}
77
		}
78
	}
78
	}
79
	
79
 
80
	/**
80
	/**
81
	* Ajouter un enregistrement dans la base de données.
81
	* Ajouter un enregistrement dans la base de données.
82
	* @return true si ok, false si aucun enregistrement effectué
82
	* @return true si ok, false si aucun enregistrement effectué
83
	*/
83
	*/
84
	public function ajouter()
84
	public function ajouter()
85
	{
85
	{
86
		$enregistrement = $this->basculerEnregistrementObjet($this);
86
		$enregistrement = $this->basculerEnregistrementObjet($this);
87
		$sql_attributs = '';
87
		$sql_attributs = '';
88
		$sql_valeurs = '';
88
		$sql_valeurs = '';
89
		foreach($enregistrement as $champ => $val) {
89
		foreach($enregistrement as $champ => $val) {
-
 
90
			if (!is_numeric($val)) {
-
 
91
				$val = '"'.$val.'"';
-
 
92
			}
90
			$sql_attributs .= $champ.', ';
93
			$sql_attributs .= $champ.', ';
91
			$sql_valeurs .= $val.', ';
94
			$sql_valeurs .= $val.', ';
92
		}
95
		}
93
		$sql_attributs = trim($sql_attributs, ', ');
96
		$sql_attributs = trim($sql_attributs, ', ');
94
		$sql_valeurs = trim($sql_valeurs, ', ');
97
		$sql_valeurs = trim($sql_valeurs, ', ');
95
		$requete = 	'INSERT INTO '.$this->getBaseDeDonnees().'.'.$this->getTableNom().' '.
98
		$requete = 	'INSERT INTO '.$this->getBaseDeDonnees().'.'.$this->getTableNom().' '.
96
					'( '.$sql_attributs.' ) '.
99
					'( '.$sql_attributs.' ) '.
97
					'VALUES '.
100
					'VALUES '.
98
					'( '.$sql_valeurs.' )';
101
					'( '.$sql_valeurs.' )';
99
					
-
 
-
 
102
		trigger_error($requete, E_USER_NOTICE);
100
		$resultat = $GLOBALS['db']->query($requete);
103
		$resultat = $GLOBALS['db']->query($requete);
101
		
104
 
102
		(DB::isError($resultat)) ? die (GestionnaireErreur::retournerErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)) : '' ;
105
		(DB::isError($resultat)) ? die (GestionnaireErreur::retournerErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)) : '' ;
103
		$nbre_enregistrement_ajoute = $GLOBALS['db']->affectedRows();
106
		$nbre_enregistrement_ajoute = $GLOBALS['db']->affectedRows();
104
		if ($nbre_enregistrement_ajoute == 1) {
107
		if ($nbre_enregistrement_ajoute == 1) {
105
			return true;
108
			return true;
106
		} elseif ($nbre_enregistrement_ajoute == 0) {
109
		} elseif ($nbre_enregistrement_ajoute == 0) {
107
			return false;
110
			return false;
108
		}
111
		}
109
	}
112
	}
110
	
113
 
111
	/**
114
	/**
112
	* Modifier un enregistrement dans la base de données.
115
	* Modifier un enregistrement dans la base de données.
113
	* @return true si ok, false si aucun enregistrement effectué
116
	* @return true si ok, false si aucun enregistrement effectué
114
	*/
117
	*/
115
	public function modifier()
118
	public function modifier()
116
	{
119
	{
117
		$enregistrement = $this->basculerEnregistrementObjet($this);
120
		$enregistrement = $this->basculerEnregistrementObjet($this);
118
		$sql_where = '';
121
		$sql_where = '';
119
		$sql_set = '';
122
		$sql_set = '';
120
		foreach($enregistrement as $champ => $val) {
123
		foreach($enregistrement as $champ => $val) {
-
 
124
			if (!is_numeric($val)) {
-
 
125
				$val = '"'.$val.'"';
-
 
126
			}
121
			if (preg_match('/_id_/', $champ)) {
127
			if (preg_match('/_id_/', $champ)) {
122
				$sql_where .= $champ.' = '.$val.' AND ';
128
				$sql_where .= $champ.' = '.$val.' AND ';
123
			} else {
129
			} else {
124
				$sql_set .= $champ.' = '.$val.', ';
130
				$sql_set .= $champ.' = '.$val.', ';
125
			}
131
			}
126
		}
132
		}
127
		$sql_set = trim($sql_set, ', ').' ';
133
		$sql_set = trim($sql_set, ', ').' ';
128
		$sql_where = trim($sql_where, ' AND ').' ';
134
		$sql_where = trim($sql_where, ' AND ').' ';
129
		$requete = 	'UPDATE '.$this->getBaseDeDonnees().'.'.$this->getTableNom().' SET '.$sql_set.'WHERE '.$sql_where;
135
		$requete = 	'UPDATE '.$this->getBaseDeDonnees().'.'.$this->getTableNom().' SET '.$sql_set.'WHERE '.$sql_where;
130
					
-
 
-
 
136
		trigger_error($requete, E_USER_NOTICE);
131
		$resultat = $GLOBALS['db']->query($requete);
137
		$resultat = $GLOBALS['db']->query($requete);
132
		
138
 
133
		(DB::isError($resultat)) ? die (GestionnaireErreur::retournerErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)) : '' ;
139
		(DB::isError($resultat)) ? die (GestionnaireErreur::retournerErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)) : '' ;
134
		$nbre_enregistrement_ajoute = $GLOBALS['db']->affectedRows();
140
		$nbre_enregistrement_ajoute = $GLOBALS['db']->affectedRows();
135
		if ($nbre_enregistrement_ajoute == 1) {
141
		if ($nbre_enregistrement_ajoute == 1) {
136
			return true;
142
			return true;
137
		} elseif ($nbre_enregistrement_ajoute == 0) {
143
		} elseif ($nbre_enregistrement_ajoute == 0) {
138
			return false;
144
			return false;
139
		}
145
		}
140
	}
146
	}
141
	
147
 
142
	/**
148
	/**
143
	* Supprimer un enregistrement dans la base de données.
149
	* Supprimer un enregistrement dans la base de données.
144
	* @return true si ok, false si aucun enregistrement effectué
150
	* @return true si ok, false si aucun enregistrement effectué
145
	*/
151
	*/
146
	public function supprimer()
152
	public function supprimer()
147
	{
153
	{
148
		$enregistrement = $this->basculerEnregistrementObjet($this);
154
		$enregistrement = $this->basculerEnregistrementObjet($this);
149
		$sql_where = '';
155
		$sql_where = '';
150
		foreach($enregistrement as $champ => $val) {
156
		foreach($enregistrement as $champ => $val) {
-
 
157
			if (!is_numeric($val)) {
-
 
158
				$val = '"'.$val.'"';
-
 
159
			}
151
			//if (preg_match('/_id_/', $champ)) {
160
			//if (preg_match('/_id_/', $champ)) {
152
				$sql_where .= $champ.' = '.$val.' AND ';
161
				$sql_where .= $champ.' = '.$val.' AND ';
153
			//}
162
			//}
154
		}
163
		}
155
		$sql_where = trim($sql_where, ' AND ').' ';
164
		$sql_where = trim($sql_where, ' AND ').' ';
156
		$requete = 'DELETE FROM '.$this->getBaseDeDonnees().'.'.$this->getTableNom().' WHERE '.$sql_where ;
165
		$requete = 'DELETE FROM '.$this->getBaseDeDonnees().'.'.$this->getTableNom().' WHERE '.$sql_where ;
157
					
-
 
-
 
166
		trigger_error($requete, E_USER_NOTICE);
158
		$resultat = $GLOBALS['db']->query($requete);
167
		$resultat = $GLOBALS['db']->query($requete);
159
		(DB::isError($resultat)) ? die (GestionnaireErreur::retournerErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)) : '' ;
168
		(DB::isError($resultat)) ? die (GestionnaireErreur::retournerErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)) : '' ;
Line 160... Line 169...
160
 
169
 
161
		$nbre_enregistrement_ajoute = $GLOBALS['db']->affectedRows();
170
		$nbre_enregistrement_ajoute = $GLOBALS['db']->affectedRows();
162
		if ($nbre_enregistrement_ajoute == 1) {
171
		if ($nbre_enregistrement_ajoute == 1) {
163
			return true;
172
			return true;
164
		} elseif ($nbre_enregistrement_ajoute == 0) {
173
		} elseif ($nbre_enregistrement_ajoute == 0) {
165
			return false;
174
			return false;
166
		}
175
		}
167
	}
176
	}
168
	
177
 
169
}
178
}
170
?>
179
?>