liliputien2002
Messages postés46Date d'inscriptionjeudi 2 octobre 2003StatutMembreDernière intervention 1 avril 2004
-
1 avril 2004 à 14:57
cobax
Messages postés33Date d'inscriptionsamedi 17 mai 2008StatutMembreDernière intervention12 juin 2008
-
19 mai 2008 à 23:30
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 :
je vous remercie bcp mais y'aurait il pas un interface graphique qui nous empécherait de ecrire des ligne de commande et d'avoir affaire seulement avec la souri
cobax
Messages postés33Date d'inscriptionsamedi 17 mai 2008StatutMembreDernière intervention12 juin 20086 19 mai 2008 à 23:30
Sympa ta classe , faudrait tester quand même voir si on gagné vraiment du temps , mais c'est une bonne idée .
abdousow y a mieux tu paye qq'un et il fait tout .
19 mai 2008 à 23:30
abdousow y a mieux tu paye qq'un et il fait tout .