|
Trouver une ressource
Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !
CLASSE DATABASE POUR CONNECTION ET MODIFICATION D'UNE BDD MYSQL
Information sur la source
Description
Hello Oui, je sais ce que vous vous dites : "encore une classe de connection a une base de donnée" Et a cela je vais retorquer..... bah oui, vous avez raison! Encore une classe Mais la différence, c'est que c'est pour moi ma premiere class ( et oui, je m'initie à la POO ) donc, pour résumer, cette classe permet de : - se connecter a la BDD ( c'est quand meme la base ) - ajouter une entrée - modifier une entrée - rechercher une entrée - détruire une entrée - vider une table - compte les enregistrements d'une table - compte les requetes effectuées - retourne de dernier id d'une table (apres ajout ou modification d'une entrée )
Source
- <?php
-
- class Database {
-
- function __construct($db_host, $db_root, $db_pass, $db_name){
-
- mysql_connect($db_host, $db_root, $db_pass);
- mysql_select_db($db_name);
-
- $this -> db_host = $db_host;
- $this -> db_root = $db_root;
- $this -> db_pass = $db_pass;
- $this -> db_name = $db_name;
- $this -> count_request = 0;
-
- }
-
- //--------------------------------------------------------------------------------
- // Fonction d'ajout
- //--------------------------------------------------------------------------------
-
-
- // Ajoute un nouvel enregistrement
- //--------------------------------------------------------------------------------
- // L'id de l'enregistrement créé est disponible dans $this->$db_table->last_id
- //
- // $attributes: tableau contenant les données à mettre à jour sous la forme : array('champ'=>valeur, ...)
- // $db_table: table concernée par la requete
- //
- // La fonction retourne "true" en cas de succès, "false" sinon
- //--------------------------------------------------------------------------------
- public function add($attributes, $db_table) {
-
- $sql = "INSERT INTO $db_table SET ";
- $sql .= $this->make_attributes($attributes);
- $result = $this->mysqlquery($sql);
-
- // Mise à jour du dernier identifiant de la table courrante
- $this->$db_table->last_id = mysql_insert_id();
-
- // Mise à jour du cache du nombre d'enregistrements
- $this->$db_table->count = $this->count(array(), $db_table);
-
-
- return($result);
- }
-
- //--------------------------------------------------------------------------------
- // Fonction de modification
- //--------------------------------------------------------------------------------
-
-
- // Modifie un ou plusieurs champs
- //--------------------------------------------------------------------------------
- // $condition : (string) chaine de caractère conditionnant la requete, et sous la forme : "id = '1' AND ..."
- // $attributes: tableau contenant les données à mettre à jour sous la forme : array('champ'=>valeur, ...)
- // $db_table: table concernée par la requete
- //
- // La fonction retourne "true" en cas de succès, "false" sinon
- //--------------------------------------------------------------------------------
- public function update_attributes($condition, $attributes, $db_table){
- $sql = "UPDATE $db_table SET ";
- $sql .= $this->make_attributes($attributes);
- $sql .= " WHERE $condition";
- $result = $this->mysqlquery($sql);
-
- return($result);
- }
-
-
-
- //--------------------------------------------------------------------------------
- // Fonctions de recherche
- //--------------------------------------------------------------------------------
-
-
- // Trouve un enregistrement de la table $db_table
- //--------------------------------------------------------------------------------
- // $param: (array) tableau de paramètres sous la forme : array('where' => 'id = \'1\' ', 'order'=> 'ASC', ...)
- // $db_table: table concernée par la requete
- //
- // La fonction retourne un tableau de valeurs
- //--------------------------------------------------------------------------------
- public function find($find='*', $params=array(), $db_table){
-
- $sql = "SELECT $find FROM $db_table";
- $sql.= $this->parse_params($params);
- $result = $this->mysqlquery($sql);
-
- return(mysql_fetch_array($result));
- }
-
-
- // Compte les enregistrements de la table
- //--------------------------------------------------------------------------------
- // $param: (array) tableau de paramètres sous la forme : array('where' => 'id = \'1\' ')
- // $db_table: table concernée par la requete
- //
- // La fonction retourne un nombre (int)
- //--------------------------------------------------------------------------------
- public function count($params=array(), $db_table){
- $sql = "SELECT * FROM $db_table";
- $sql.= $this->parse_params($params);
-
- $result = $this->mysqlquery($sql);
-
- return(mysql_num_rows($result));
- }
-
-
-
- //--------------------------------------------------------------------------------
- // Fonctions de destruction
- //--------------------------------------------------------------------------------
-
- // Détruit un enregistrement
- //--------------------------------------------------------------------------------
- // $condition : (string) chaine de caractère conditionnant la requete, et sous la forme : "id = '1' AND ..."
- // $param: (array) tableau de paramètres sous la forme : array('where' => 'id = \'1\' ', 'order'=> 'ASC', ...)
- // $db_table: table concernée par la requete
- //
- // La fonction retourne "true" en cas de succès, "false" sinon
- //--------------------------------------------------------------------------------
- public function destroy($condition, $db_table){
-
- $sql = "DELETE FROM $db_table WHERE $condition";
- $result = $this->mysqlquery($sql);
-
- $this->$db_table->last_id = mysql_insert_id();
-
- $this->$db_table->count = $this->count(array(), $db_table);
-
- return($result);
- }
-
-
- // Effacer tous les enregistrements
- //--------------------------------------------------------------------------------
- // $db_table: table concernée par la requete
- //
- // La fonction retourne "true" en cas de succès, "false" sinon
- //--------------------------------------------------------------------------------
- public function truncate($db_table){
- $sql = "TRUNCATE TABLE $db_table";
- $result = $this->mysqlquery($sql);
-
- $this->$db_table->count = '0';
-
- $this->$db_table->last_id = '0';
-
- return($result);
- }
-
-
-
- // Execute une requète SQL
- //--------------------------------------------------------------------------------
- // $sql: (string) requete SQL a éxécuter
- //
- // La fonction retourne la requete $sql éxécutée ou un message d'erreur
- //--------------------------------------------------------------------------------
- public function mysqlquery($sql){
- $result = mysql_query($sql);
-
- if(!$result) throw new Exception($this->mysqlerror($sql));
- else $this->count_request++;
-
- return $result;
- }
-
-
- //--------------------------------------------------------------------------------
- // Fonctions protégées
- //--------------------------------------------------------------------------------
-
-
- // Affiche un message d'erreur complet
- //--------------------------------------------------------------------------------
- // $sql_query: (string) requete SQL éxécutée par mysqlquery
- //
- // La fonction retourne une chaine de caractères
- //--------------------------------------------------------------------------------
- protected function mysqlerror($sql_query){
-
- return 'Erreur SQL ' . mysql_errno() . ': ' . mysql_error().'<br />'.$sql_query;
-
- }
-
-
- // Création d'une chaine SQL contenant un ensemble 'champ'=valeur en fonction du table passé en paramètre
- //--------------------------------------------------------------------------------
- // Les champs sont associés aux clés du tableau et les données à leurs valeurs.
- //
- // $attributes: (array) Tableau contenant les données traiter : array('champ'=>valeur, ...)
- //
- // La fonction retourne une chaîne SQL du type 'champ'=valeur, 'champ'=valeur, ...
- //--------------------------------------------------------------------------------
- protected function make_attributes($attributes){
- $keys = array_keys($attributes);
- $sql = '';
- $nb_keys = count($keys);
- for($index=0; $index<$nb_keys ; $index++)
- {
- $key = $keys[$index];
- $value = mysql_real_escape_string($attributes[$key]);
-
-
- $sql .= "$key='$value'";
-
- // Pas le dernier paramètre : on ajoute une virgule
- if($index !== count($keys)-1)
- $sql .= ', ';
- }
- return($sql);
- }
-
-
- // Création d'une chaîne SQL contenant les paramètres passés dans le tableau
- //--------------------------------------------------------------------------------
- // Ne traite que les paramettres 'conditions', 'order' et 'limits'
- //
- // $params : (array) Tableau contenant les données traiter : array('parametre'=>valeur, ...)
- //
- // La fonction retourne une chaîne SQL (ou une chaîne vide si aucun paramètre correct n'est passé)
- //--------------------------------------------------------------------------------
- protected function parse_params($params){
- $retour = '';
-
- if(array_key_exists('where', $params))
- $retour .= ' WHERE '.$params['where'];
-
- if(array_key_exists('order', $params))
- $retour .= ' ORDER BY '.$params['order'];
-
- if(array_key_exists('limit', $params))
- $retour .= ' LIMIT '.$params['limit'];
- return $retour;
- }
-
- }
- ?>
<?php
class Database {
function __construct($db_host, $db_root, $db_pass, $db_name){
mysql_connect($db_host, $db_root, $db_pass);
mysql_select_db($db_name);
$this -> db_host = $db_host;
$this -> db_root = $db_root;
$this -> db_pass = $db_pass;
$this -> db_name = $db_name;
$this -> count_request = 0;
}
//--------------------------------------------------------------------------------
// Fonction d'ajout
//--------------------------------------------------------------------------------
// Ajoute un nouvel enregistrement
//--------------------------------------------------------------------------------
// L'id de l'enregistrement créé est disponible dans $this->$db_table->last_id
//
// $attributes: tableau contenant les données à mettre à jour sous la forme : array('champ'=>valeur, ...)
// $db_table: table concernée par la requete
//
// La fonction retourne "true" en cas de succès, "false" sinon
//--------------------------------------------------------------------------------
public function add($attributes, $db_table) {
$sql = "INSERT INTO $db_table SET ";
$sql .= $this->make_attributes($attributes);
$result = $this->mysqlquery($sql);
// Mise à jour du dernier identifiant de la table courrante
$this->$db_table->last_id = mysql_insert_id();
// Mise à jour du cache du nombre d'enregistrements
$this->$db_table->count = $this->count(array(), $db_table);
return($result);
}
//--------------------------------------------------------------------------------
// Fonction de modification
//--------------------------------------------------------------------------------
// Modifie un ou plusieurs champs
//--------------------------------------------------------------------------------
// $condition : (string) chaine de caractère conditionnant la requete, et sous la forme : "id = '1' AND ..."
// $attributes: tableau contenant les données à mettre à jour sous la forme : array('champ'=>valeur, ...)
// $db_table: table concernée par la requete
//
// La fonction retourne "true" en cas de succès, "false" sinon
//--------------------------------------------------------------------------------
public function update_attributes($condition, $attributes, $db_table){
$sql = "UPDATE $db_table SET ";
$sql .= $this->make_attributes($attributes);
$sql .= " WHERE $condition";
$result = $this->mysqlquery($sql);
return($result);
}
//--------------------------------------------------------------------------------
// Fonctions de recherche
//--------------------------------------------------------------------------------
// Trouve un enregistrement de la table $db_table
//--------------------------------------------------------------------------------
// $param: (array) tableau de paramètres sous la forme : array('where' => 'id = \'1\' ', 'order'=> 'ASC', ...)
// $db_table: table concernée par la requete
//
// La fonction retourne un tableau de valeurs
//--------------------------------------------------------------------------------
public function find($find='*', $params=array(), $db_table){
$sql = "SELECT $find FROM $db_table";
$sql.= $this->parse_params($params);
$result = $this->mysqlquery($sql);
return(mysql_fetch_array($result));
}
// Compte les enregistrements de la table
//--------------------------------------------------------------------------------
// $param: (array) tableau de paramètres sous la forme : array('where' => 'id = \'1\' ')
// $db_table: table concernée par la requete
//
// La fonction retourne un nombre (int)
//--------------------------------------------------------------------------------
public function count($params=array(), $db_table){
$sql = "SELECT * FROM $db_table";
$sql.= $this->parse_params($params);
$result = $this->mysqlquery($sql);
return(mysql_num_rows($result));
}
//--------------------------------------------------------------------------------
// Fonctions de destruction
//--------------------------------------------------------------------------------
// Détruit un enregistrement
//--------------------------------------------------------------------------------
// $condition : (string) chaine de caractère conditionnant la requete, et sous la forme : "id = '1' AND ..."
// $param: (array) tableau de paramètres sous la forme : array('where' => 'id = \'1\' ', 'order'=> 'ASC', ...)
// $db_table: table concernée par la requete
//
// La fonction retourne "true" en cas de succès, "false" sinon
//--------------------------------------------------------------------------------
public function destroy($condition, $db_table){
$sql = "DELETE FROM $db_table WHERE $condition";
$result = $this->mysqlquery($sql);
$this->$db_table->last_id = mysql_insert_id();
$this->$db_table->count = $this->count(array(), $db_table);
return($result);
}
// Effacer tous les enregistrements
//--------------------------------------------------------------------------------
// $db_table: table concernée par la requete
//
// La fonction retourne "true" en cas de succès, "false" sinon
//--------------------------------------------------------------------------------
public function truncate($db_table){
$sql = "TRUNCATE TABLE $db_table";
$result = $this->mysqlquery($sql);
$this->$db_table->count = '0';
$this->$db_table->last_id = '0';
return($result);
}
// Execute une requète SQL
//--------------------------------------------------------------------------------
// $sql: (string) requete SQL a éxécuter
//
// La fonction retourne la requete $sql éxécutée ou un message d'erreur
//--------------------------------------------------------------------------------
public function mysqlquery($sql){
$result = mysql_query($sql);
if(!$result) throw new Exception($this->mysqlerror($sql));
else $this->count_request++;
return $result;
}
//--------------------------------------------------------------------------------
// Fonctions protégées
//--------------------------------------------------------------------------------
// Affiche un message d'erreur complet
//--------------------------------------------------------------------------------
// $sql_query: (string) requete SQL éxécutée par mysqlquery
//
// La fonction retourne une chaine de caractères
//--------------------------------------------------------------------------------
protected function mysqlerror($sql_query){
return 'Erreur SQL ' . mysql_errno() . ': ' . mysql_error().'<br />'.$sql_query;
}
// Création d'une chaine SQL contenant un ensemble 'champ'=valeur en fonction du table passé en paramètre
//--------------------------------------------------------------------------------
// Les champs sont associés aux clés du tableau et les données à leurs valeurs.
//
// $attributes: (array) Tableau contenant les données traiter : array('champ'=>valeur, ...)
//
// La fonction retourne une chaîne SQL du type 'champ'=valeur, 'champ'=valeur, ...
//--------------------------------------------------------------------------------
protected function make_attributes($attributes){
$keys = array_keys($attributes);
$sql = '';
$nb_keys = count($keys);
for($index=0; $index<$nb_keys ; $index++)
{
$key = $keys[$index];
$value = mysql_real_escape_string($attributes[$key]);
$sql .= "$key='$value'";
// Pas le dernier paramètre : on ajoute une virgule
if($index !== count($keys)-1)
$sql .= ', ';
}
return($sql);
}
// Création d'une chaîne SQL contenant les paramètres passés dans le tableau
//--------------------------------------------------------------------------------
// Ne traite que les paramettres 'conditions', 'order' et 'limits'
//
// $params : (array) Tableau contenant les données traiter : array('parametre'=>valeur, ...)
//
// La fonction retourne une chaîne SQL (ou une chaîne vide si aucun paramètre correct n'est passé)
//--------------------------------------------------------------------------------
protected function parse_params($params){
$retour = '';
if(array_key_exists('where', $params))
$retour .= ' WHERE '.$params['where'];
if(array_key_exists('order', $params))
$retour .= ' ORDER BY '.$params['order'];
if(array_key_exists('limit', $params))
$retour .= ' LIMIT '.$params['limit'];
return $retour;
}
}
?>
Historique
- 21 juillet 2007 23:20:35 :
- source modifiée pour que la colorisation syntaxique fonctionne correctement
- 22 juillet 2007 15:12:12 :
- résolution d'un petit bug avec la function count
- 23 juillet 2007 14:16:02 :
- correction d'une erreur dans un commentaire
- 30 juillet 2007 11:35:00 :
- ajout d'un "throw new Exception" à la fontion mysqlquery et modification de la fonction make_attributes pour accelerer la boucle for
- 30 juillet 2007 11:35:54 :
- erreur de frappe
Sources du même auteur
Sources de la même categorie
Sources en rapport avec celle ci
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
probleme de tchat php [ par linkinpar236737 ]
j'ai un probleme de tchat dans mon site, j'ai acheté un flashchat, utilisant le php, et quand j'essaye de l'installer, il faut mettre : Database Name,
php - intranet - MysqL [ par ben272 ]
Bonsoir à tous, j'ai quelques questions à poser. Voilà dans mon collège on va mettre en place un intranet ( section informatique seulement ),et c'est
Php ou javascript ???????? gros pb [ par elisabeth_nov ]
Bonjour, voilà je débute depuis un moment déjà mais j'ai toujours autant de difficultés!!!!Mon problème à l'heure actuelle est que je dois créer une p
problème php variable+include+mysql_query [ par DEADisDEADisDEAD ]
Bonjour,Je suis en train de créer un php pour enregistrés des données vers une base de donnée mysql.Le principe étant d'envoyé certaines informations
Vérification formulaire livre d'or [ par Danamel ]
Bonjour à tous J'ai actuellement sur mon site un livre d'or qui fonctionne mais désirant le modifier afin de changer sa présentation je fait un s
moniteur de recherche en php et mysql [ par tadjidine ]
Bonjour à tous;je suis entrain de developpé un application gestion d'un agenda, je besoin de votre aide pour la formulaire de recherche , en faite ma
se connecter à une base sql [ par matsumato ]
bonjour; j'ai essayé de me connecter à ma base de donnée et afficher le champ ename dans ma table employer et j'ai l'erreur suivant : Warning: mysql_
php et xml [ par brudao ]
Bonjour,j'ai un fichier XML qui contient le schéma d'une base de donnée mysql.maintenant je voudrais à l'aide de php récupérer dans le fichier xml les
Variable Javacript vers PHP [ par 4lman78 ]
Bonjour à tous Alors j'ai un petit soucis :Voici mon code<?php include('sql.php');mysql_connect($serveur,$login,$mdp);mysql_select_db($bdd, $connex
calcule automatisé [ par papiona ]
Salut a tousje vais vous expliquer mon pbléme :je développe un exemple en php qui permet un client d'inscrire et au moment de cette inscription il doi
|
Téléchargements
Logiciels à télécharger sur le même thème :
|