New file |
0,0 → 1,206 |
<?php |
|
abstract class aGttSql { |
|
/*** Attributs : */ |
private $base_de_donnees = GTT_BDD_NOM; |
protected $table_nom; |
protected $correspondance; |
|
/*** Accesseurs : */ |
|
// Base De Donnees |
function getBaseDeDonnees() |
{ |
return $this->base_de_donnees; |
} |
function setBaseDeDonnees($bdd) |
{ |
$this->base_de_donnees = $bdd; |
} |
// TableNom |
function getTableNom() |
{ |
return $this->dao_table_nom; |
} |
function setTableNom($tn) |
{ |
$this->dao_table_nom = $tn; |
} |
// Correspondance |
function getCorrespondance($champ = null) |
{ |
if (!is_null($champ)) { |
return $this->dao_correspondance[$champ]; |
} |
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 = $this->donnerMethodeSetAvecAttribut($attribut); |
$this->$methode($donnees[$champ]); |
} |
} |
} else { |
$Objet = new $classe; |
foreach ($this->getCorrespondance() as $champ => $attribut) { |
if (isset($donnees[$champ]) && !is_null($donnees[$champ])) { |
$methode = $this->donnerMethodeSetAvecAttribut($attribut); |
$Objet->$methode($donnees[$champ]); |
} |
} |
return $Objet; |
} |
} else if ($donnees instanceof $classe) { |
$enregistrement = array(); |
foreach ($this->getCorrespondance() as $champ => $attribut) { |
$methode = $this->donnerMethodeGetAvecAttribut($attribut); |
if (method_exists($donnees, $methode)) { |
if (!is_null($donnees->$methode())) { |
$enregistrement[$champ] = $donnees->$methode(); |
} |
} |
} |
return $enregistrement; |
} |
} |
private function donnerMethodeGetAvecAttribut($attribut) |
{ |
return 'get'.str_replace(' ', '', ucwords(str_replace('_', ' ', $attribut))); |
} |
private function donnerMethodeGetAvecChamp($champ) |
{ |
return 'get'.str_replace(' ', '', ucwords(str_replace('_', ' ', $this->getCorrespondance($champ)))); |
} |
private function donnerMethodeSetAvecAttribut($attribut) |
{ |
return 'set'.str_replace(' ', '', ucwords(str_replace('_', ' ', $attribut))); |
} |
private function donnerMethodeSetAvecChamp($champ) |
{ |
return 'set'.str_replace(' ', '', ucwords(str_replace('_', ' ', $this->getCorrespondance($champ)))); |
} |
|
/** |
* 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) { |
if (!is_numeric($val)) { |
$val = '"'.$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.' )'; |
trigger_error($requete, E_USER_NOTICE); |
$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. |
* @param object l'ancien objet contenant les valeurs de clés primaires non modifiées. Laissé vide si on ne modifie pas les clés. |
* @return true si ok, false si aucun enregistrement effectué. |
*/ |
public function modifier($Ancien = null) |
{ |
$enregistrement = $this->basculerEnregistrementObjet($this); |
$sql_where = ''; |
$sql_set = ''; |
foreach($enregistrement as $champ => $val) { |
if (!is_numeric($val)) { |
$val = '"'.$val.'"'; |
} |
$sql_set .= $champ.' = '.$val.', '; |
$classe = get_class($this); |
if ($Ancien instanceof $classe) { |
$methode = $this->donnerMethodeGetAvecChamp($champ); |
$val = $Ancien->$methode(); |
if (!is_numeric($val)) { |
$val = '"'.$val.'"'; |
} |
} |
if (preg_match('/_id_/', $champ)) { |
$sql_where .= $champ.' = '.$val.' AND '; |
} |
} |
$sql_set = trim($sql_set, ', ').' '; |
$sql_where = trim($sql_where, ' AND ').' '; |
$requete = 'UPDATE '.$this->getBaseDeDonnees().'.'.$this->getTableNom().' SET '.$sql_set.'WHERE '.$sql_where; |
trigger_error($requete, E_USER_NOTICE); |
$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 (!is_numeric($val)) { |
$val = '"'.$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 ; |
trigger_error($requete, E_USER_NOTICE); |
$resultat = $GLOBALS['db']->query($requete); |
(DB::isError($resultat)) ? die (GestionnaireErreur::retournerErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)) : '' ; |
|
$nbre_enregistrement_suppr = $GLOBALS['db']->affectedRows(); |
if ($nbre_enregistrement_suppr == 1) { |
return true; |
} elseif ($nbre_enregistrement_suppr == 0) { |
return false; |
} |
} |
|
} |
?> |