Bonjour
Pour ceux qui en ont marre de taper a la mimine les requete sql simple (Select, Insert, Update, Delete)(monotable), voila un objet php qui pourra (je l'espère) faire plaisir à certain.
tout d'abord le code de l'objet :
class Table {
var $From;
var $Table = array();
var $StrucTable = array();
// constructeur
function Table($NomTable, $NomBase) {
$this->From = $NomTable;
mysql_connect("localhost", "mdslroot", "access_");
mysql_select_db($NomBase);
$resultat=mysql_query("SELECT * FROM ".$NomTable);
$nbr_champ = mysql_num_fields($resultat);
$contenuChamp=mysql_fetch_row($resultat);
for ($i=0;$i<$nbr_champ;$i++) {
$this->StrucTable[$i] = mysql_field_name($resultat, $i);
}
mysql_close();
foreach($this->StrucTable as $k => $v) {
$this->Table[$v][0] = $v;
$this->Table[$v]["S"] = "Not";
$this->Table[$v]["V"] = "Not";
}
}
// métode de construction de requete select
function Select($WhereClause, $OrderClause, $GroupClause) {
$SelectClause = "";
foreach($this->StrucTable as $k => $v) {
if ($this->Table[$v]["S"] == "1") {
$SelectClause .= $this->Table[$v][0] . ", ";
}
}
$SelectClause = substr($SelectClause, 0, strlen($SelectClause)-2);
$Rq="SELECT " . $SelectClause . " FROM " . $this->From;
if ($WhereClause<>"") {
$Rq .= " WHERE " . $WhereClause;
}
if ($OrderClause<>"") {
$Rq .= " ORDER BY " . $OrderClause;
}
if ($GroupClause<>"") {
$Rq .= " GROUP BY " . $GroupClause;
}
$this->RAZ();
return $Rq;
} // fin de la méthode lire_patient
// méthode de contruction de requete Update
function Update($WhereClause) {
$UpdateClause = "";
foreach($this->StrucTable as $k => $v) {
if ($this->Table[$v]["S"] == "1") {
$UpdateClause .= "`" . $this->Table[$v][0] . "`='" . $this->Table[$v]["V"] . "', ";
}
}
$UpdateClause = substr($UpdateClause, 0, strlen($UpdateClause)-2);
$Rq="UPDATE `" . $this->From . "` SET " . $UpdateClause;
if ($WhereClause<>"") {
$Rq .= " WHERE " . $WhereClause;
}
$this->RAZ();
return $Rq;
}
// méthode de construc de requete Delete
function Supprime() {
$WhereClause = "";
foreach($this->StrucTable as $k => $v) {
if ($this->Table[$v]["S"] == "1") {
$WhereClause .= $this->Table[$v][0] . "=" . $this->Table[$v]["V"] . " AND ";
}
}
$WhereClause = substr($WhereClause, 0, strlen($WhereClause)-5);
$Rq="DELETE FROM ". $this->From;;
if ($WhereClause<>"") {
$Rq .= " WHERE " . $WhereClause;
}
$this->RAZ();
return $Rq;
}
// méthode de construction de requete Insert
function Insert() {
$InserChamp = "";
$InserValeur = "";
foreach($this->StrucTable as $k => $v) {
if ($this->Table[$v]["S"] == "1") {
$InserChamp .= "" . $this->Table[$v][0] . ", ";
$Valeur = '';
if ($this->Table[$v]["V"] <> "Not") {
$Valeur = $this->Table[$v]["V"];
}
$InserValeur .= "'" . addSlashes($Valeur) . "', ";
}
}
$InserChamp = substr($InserChamp, 0, strlen($InserChamp)-2);
$InserValeur = substr($InserValeur, 0, strlen($InserValeur)-2);
$this->RAZ();
$Rq="INSERT INTO `" . $this->From . "` (" . $InserChamp . ") VALUES (" . $InserValeur . ")";
return $Rq;
}
// méthode de remise à zéro :
// pour tous les champs de la table sélectionné on dit
// tous les champs ne sont plus sélectionner
// tous les champs n'ont plus aucune valeur
function RAZ() {
foreach($this->StrucTable as $k => $v) {
$this->Table[$v]["S"] = "Not";
$this->Table[$v]["V"] = "Not";
}
}
// Méthode de sélection du champs
function SelectChamp($NomChamp) {
$this->Table[$NomChamp]["S"] = 1;
}
// méthode d'affectation de valeur à un champs
function ValeurChamp($NomChamp, $LaValeur) {
$this->SelectChamp($NomChamp);
$this->Table[$NomChamp]["V"] = $LaValeur;
}
}
Comment ca marche : de la manière suivante :
créer une variable de type table
$Article = new Table("MaTable", "MaBase");
Le premier paramètre identifie la table sur la quelle vous allez lancer vos requête.
Ensuite vous voulez faire un select mais que de certain champ :
$Article->SelectChamp("Champ1");
$Article->SelectChamp("Champ3");
$Article->SelectChamp("Champ5");
maintenant faire executer la requete :
mysql_query($Article->Select("LaWhereClause", "LeOrderByClause", "LaGroupByClause"));
Pour de l'insert : on prend prend même objet puis on ecrit :
$Article->ValeurChamp("Champ1", "Valeur1");
$Article->ValeurChamp("Champ3", "Valeur3");
$Article->ValeurChamp("Champ5", "Valeur5");
mysql_query($Article->Insert());
Pour le delete :
Pour tout supprimer
mysql_query($Article->Supprime();)
Pour supprimer 1 ligne spécifique
$Article->SelectChamp("Champ1", "MaValeur");
mysql_query($Article->Supprime());
Updater :
toute la table
mysql_query($Article->Supprime());
un tuple de la table
$Article->ValeurChamp("Champ1", "MaValeur");
$Article->ValeurChamp("Champ1", "MaValeur");
mysql_query($Article->Supprime());
si vous souhaitez juste afficher la requete il suffit de replacer le mysql_query par un echo.
voila
si ça peut faire des heureux tant mieux