0/5 (12 avis)
Snippet vu 14 865 fois - Téléchargée 19 fois
<?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; } } ?>
11 oct. 2007 à 12:39
21 août 2007 à 20:21
16 août 2007 à 18:15
G_Barthe -> C'est une question "Pour la remarque du mysql_close() y en a t'il besoin vu que tu as utilisé la fonction __construct($db_host, $db_root, $db_pass, $db_name)." ou une réponse?
15 août 2007 à 17:29
Pour la remarque du mysql_close() y en a t'il besoin vu que tu as utilisé la fonction __construct($db_host, $db_root, $db_pass, $db_name).
Et pour finir, la connexion étant établi sur ma première page, dois-je la réactiver sur la page suivante ou est-elle valable jusqu'à la fermeture de firefox. J'ai un peu de mal sur ces points.
Sinon les premiers tests sont concluants. Ca marche !!!!!!!!!! Merci encore
15 août 2007 à 16:30
Merci si c'est pas trop demandé bien sur. hihi
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.