Blame | Last modification | View Log | RSS feed
<?phpabstract class aGttSql {/*** Attributs : */private $base_de_donnees = GTT_BDD_NOM;protected $table_nom;protected $correspondance;/*** Accesseurs : */// Base De Donneesfunction getBaseDeDonnees(){return $this->base_de_donnees;}function setBaseDeDonnees($bdd){$this->base_de_donnees = $bdd;}// TableNomfunction getTableNom(){return $this->dao_table_nom;}function setTableNom($tn){$this->dao_table_nom = $tn;}// Correspondancefunction getCorrespondance(){return $this->dao_correspondance;}function setCorrespondance($c){$this->dao_correspondance = $c;}/*** Méthodes : *//** Instancie un objet utilisateur à partir d'un enregistrement issu de la base de donnée ou l'inverse.* Cette métohode permet de s'abstraire des noms des champs présent dans la base de donnée.*/protected function basculerEnregistrementObjet($donnees, $instancier = false){$classe = get_class($this);if (is_array($donnees)) {if ($instancier) {foreach ($this->getCorrespondance() as $champ => $attribut) {if (isset($donnees[$champ]) && !is_null($donnees[$champ])) {$methode = 'set'.str_replace(' ', '', ucwords(str_replace('_', ' ', $attribut)));$this->$methode($donnees[$champ]);}}} else {$Objet = new $classe;foreach ($this->getCorrespondance() as $champ => $attribut) {if (isset($donnees[$champ]) && !is_null($donnees[$champ])) {$methode = 'set'.str_replace(' ', '', ucwords(str_replace('_', ' ', $attribut)));$Objet->$methode($donnees[$champ]);}}return $Objet;}} else if ($donnees instanceof $classe) {$enregistrement = array();foreach ($this->getCorrespondance() as $champ => $attribut) {$methode = 'get'.str_replace(' ', '', ucwords(str_replace('_', ' ', $attribut)));if (method_exists($donnees, $methode)) {if ($donnees->$methode()) {$enregistrement[$champ] = $donnees->$methode();}}}return $enregistrement;}}/*** Ajouter un enregistrement dans la base de données.* @return true si ok, false si aucun enregistrement effectué*/public function ajouter(){$enregistrement = $this->basculerEnregistrementObjet($this);$sql_attributs = '';$sql_valeurs = '';foreach($enregistrement as $champ => $val) {$sql_attributs .= $champ.', ';$sql_valeurs .= $val.', ';}$sql_attributs = trim($sql_attributs, ', ');$sql_valeurs = trim($sql_valeurs, ', ');$requete = 'INSERT INTO '.$this->getBaseDeDonnees().'.'.$this->getTableNom().' '.'( '.$sql_attributs.' ) '.'VALUES '.'( '.$sql_valeurs.' )';$resultat = $GLOBALS['db']->query($requete);(DB::isError($resultat)) ? die (GestionnaireErreur::retournerErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)) : '' ;$nbre_enregistrement_ajoute = $GLOBALS['db']->affectedRows();if ($nbre_enregistrement_ajoute == 1) {return true;} elseif ($nbre_enregistrement_ajoute == 0) {return false;}}/*** Modifier un enregistrement dans la base de données.* @return true si ok, false si aucun enregistrement effectué*/public function modifier(){$enregistrement = $this->basculerEnregistrementObjet($this);$sql_where = '';$sql_set = '';foreach($enregistrement as $champ => $val) {if (preg_match('/_id_/', $champ)) {$sql_where .= $champ.' = '.$val.' AND ';} else {$sql_set .= $champ.' = '.$val.', ';}}$sql_set = trim($sql_set, ', ').' ';$sql_where = trim($sql_where, ' AND ').' ';$requete = 'UPDATE '.$this->getBaseDeDonnees().'.'.$this->getTableNom().' SET '.$sql_set.'WHERE '.$sql_where;$resultat = $GLOBALS['db']->query($requete);(DB::isError($resultat)) ? die (GestionnaireErreur::retournerErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)) : '' ;$nbre_enregistrement_ajoute = $GLOBALS['db']->affectedRows();if ($nbre_enregistrement_ajoute == 1) {return true;} elseif ($nbre_enregistrement_ajoute == 0) {return false;}}/*** Supprimer un enregistrement dans la base de données.* @return true si ok, false si aucun enregistrement effectué*/public function supprimer(){$enregistrement = $this->basculerEnregistrementObjet($this);$sql_where = '';foreach($enregistrement as $champ => $val) {//if (preg_match('/_id_/', $champ)) {$sql_where .= $champ.' = '.$val.' AND ';//}}$sql_where = trim($sql_where, ' AND ').' ';$requete = 'DELETE FROM '.$this->getBaseDeDonnees().'.'.$this->getTableNom().' WHERE '.$sql_where ;$resultat = $GLOBALS['db']->query($requete);(DB::isError($resultat)) ? die (GestionnaireErreur::retournerErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)) : '' ;$nbre_enregistrement_ajoute = $GLOBALS['db']->affectedRows();if ($nbre_enregistrement_ajoute == 1) {return true;} elseif ($nbre_enregistrement_ajoute == 0) {return false;}}}?>