begin process at 2012 02 13 07:25:06
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

POO

 > 

Classes & Objets

 > 

Classe de gestions de requêtes mysql


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Classe de gestions de requêtes mysql

mardi 3 juin 2008 à 15:51:11 | Classe de gestions de requêtes mysql

choy

Alors voilà, je suis en train de faire une class pour gérer mes requêtes sql. Pour le moment ça fonctionne bien, je devrais virer tout ce qui se rapporte au maintien de la connexion (fonctionnalité que je pensai peut être utile pour d'autre mais qui ne l'est pas pour moi et donc je n'ai pas trouvé de bonne méthode pour l'implémenter... pas beaucoup essayé non plus ^^) alors n'y prettez pas trop attention. Pour le moment donc, cette classe m'a pleinement satisfait mais là je bloc sur une nouvelle fonctionnalité. Mais tout d'abord voici la classe : db){ $this->db = mysql_connect($this->db_host, $this->db_login, $this->db_password); mysql_select_db($this->base, $this->db); mysql_query("SET NAMES 'utf8'", $this->db); } } function disconnect() { mysql_close($this->db); $this->db = false; } function where($where_string,$operator='AND') { if(empty($this->where_string)){ $this->where_string = ' WHERE '.$where_string; }else{ $this->where_string .= ' '.$operator.' '.$where_string; } } function group($field_string) { $this->group_string = ' GROUP BY '.$field_string; } function order($order_string, $way='ASC') { if(empty($this->order_string)){ $this->order_string = ' ORDER BY '.$order_string.' '.$way; }else{ $this->order_string .= ', '.$order_string.' '.$way; } } function unprotect_data($data) { if(is_array($data)){ foreach($data as $k=>$i){ $output[$k]=$this->unprotect_data($i); } } else { $output = htmlspecialchars(stripslashes($data)); } return $output; } function protect_data($data) { if(is_array($data)){ foreach($data as $k=>$i){ $output[$k]=$this->protect_data($i); } } else { if(get_magic_quotes_gpc()){ if(ini_get('magic_quotes_sybase')) { $data = str_replace("''", "'", $data); } else { $data = stripslashes($data); } } $output = mysql_real_escape_string($data, $this->db); } return $output; } } class Select extends Mysql { private $select_string = '*'; private $join_string = ''; public $selected_rows; private $limit_string = ''; function Select($table,$select_string='*',$stay_open=false) { $this->table = $table; $this->select_string = $select_string; $this->stay_open = $stay_open; } function join_table($type,$table,$link) { $this->join_string .= ' '.$type.' JOIN '.$table.' ON '.$link; } function limit($limit=''){ $this->limit_string = $limit; } function query() { $this->connect(); $this->query_string = 'SELECT '.$this->select_string.' FROM '.$this->table.$this->join_string.$this->where_string.$this->group_string.$this->order_string.$this->limit_string; $this->selected_rows = mysql_query($this->query_string, $this->db)or die($this->query_string.'

'.mysql_error($this->db)); echo $this->query_string.'

'; $this->counted_rows = mysql_num_rows($this->selected_rows); $this->num_rows = mysql_num_rows($this->selected_rows); if(!$this->stay_open){ $this->disconnect(); } } } class Count extends Mysql { private $count_string = '*'; private $join_string = ''; public $selected_rows; public $counted_rows; function Count($table,$count_string='*',$stay_open=false) { $this->table = $table; $this->count_string = $count_string; $this->stay_open = $stay_open; $this->counted_rows = false; } function join_table($type,$table,$link) { $this->join_string .= ' '.$type.' JOIN '.$table.' ON '.$link; } function query() { $this->connect(); $this->query_string = 'SELECT COUNT('.$this->count_string.') FROM '.$this->table.$this->join_string.$this->where_string; $this->selected_rows = mysql_fetch_array(mysql_query($this->query_string, $this->db)); $this->counted_rows = $this->selected_rows[0]; // echo $this->query_string.'

'; if(!$this->stay_open){ $this->disconnect(); } } function num_rows() { if(!$this->counted_rows){ $this->query(); } return $this->counted_rows; } } class Insert extends Mysql { private $field_string = ''; private $value_string = ''; private $join_string = ''; public $selected_rows; public $insert_id; function Insert($table,$values,$stay_open=false) { $this->connect(); $this->table = $table; $this->stay_open = $stay_open; $this->add_values($this->protect_data($values)); } function add_values($values){ foreach($values as $field => $value){ if($value == 'CURRENT_TIMESTAMP'){ if(empty($this->field_string)){ $this->field_string = $field; $this->value_string = $value; }else{ $this->field_string .= ','.$field; $this->value_string .= ','.$value; } }else{ if(empty($this->field_string)){ $this->field_string = $field; $this->value_string = '\''.$value.'\''; }else{ $this->field_string .= ','.$field; $this->value_string .= ',\''.$value.'\''; } } } } function query() { $this->connect(); $this->query_string = 'INSERT INTO '.$this->table.'('.$this->field_string.') VALUES('.$this->value_string.')'; mysql_query($this->query_string, $this->db) or die(mysql_error()); $this->insert_id = mysql_insert_id($this->db); // echo $this->query_string.'

'; if(!$this->stay_open){ $this->disconnect(); } } } class Update extends Mysql { private $value_string = ''; public $selected_rows; function Update($table,$values,$stay_open=false) { $this->table = $table; $this->stay_open = $stay_open; $this->add_values($values); } function add_values($values){ foreach($values as $field => $value){ if($value == 'CURRENT_TIMESTAMP'){ if(empty($this->value_string)){ $this->value_string = ' '.$field.'='.$value; }else{ $this->value_string .= ','.$field.'='.$value; } }else{ if(empty($this->value_string)){ $this->value_string = ' '.$field.'=\''.$value.'\''; }else{ $this->value_string .= ','.$field.'=\''.$value.'\''; } } } } function query() { $this->connect(); $this->query_string = 'UPDATE '.$this->table.' SET'.$this->value_string.$this->where_string; $this->req = mysql_query($this->query_string, $this->db)or die(mysql_error()); // echo $this->query_string.'

'; if(!$this->stay_open){ $this->disconnect(); } } } class Delete extends Mysql { function Delete($table,$where_string='') { $this->table = $table; if(!empty($where_string)){ $this->where($where_string); } } function query() { $this->connect(); $this->query_string = 'DELETE FROM '.$this->table.$this->where_string; mysql_query($this->query_string, $this->db)or die(mysql_error()); // echo $this->query_string.'

'; if(!$this->stay_open){ $this->disconnect(); } } } function unprotect_data($data) { if(is_array($data)){ foreach($data as $k=>$i){ $output[$k]=unprotect_data($i); } } else { $output = htmlspecialchars(stripslashes($data)); } return $output; } ?> Je ne sais pas si elle peut être utile mais j'y trouve pas mal d'avantage. Exemple factice de select avec liaison : $sql = new Select('film'); $sql->join_table('left','realisateurs','film_realisateur = realisateur_id'); $sql->where('film_id = 1'); $sql->where('film_id = 2','or'); $sql->query(); while($row = mysql_fetch_assoc($sql->selected_rows)){ $row = unprotect_data($row); echo $row['film_titre'].' - '.$row['realisateur_nom']; } Maintenant j'aimerai améliorer la function where(), pour le moment elle me permet de mettre des : WHERE field1 = 'string1' AND field2 = 'string2' OR field3 != 'string3'... et j'aimerai lui faire faire ça : WHERE (field1 = 'string1' OR field2 = 'string2') AND (field3 = 'string3' OR field4 = 'string4')... Je ne vois pas comment implémenter ça tout en gardant une syntaxe simple. Si quelqu'un a une idée je suis preneur ! Sinon, si certains trouvent cette classe utile je la posterai dans les sources. À noter que la $sql->limit() prend en param 'LIMIT 0,5'. Si vous comptez utiliser cette classe il est préférable de changer ça pour qu'elle prenne en param '0,5'... me demandai pas pourquoi c'est pas fait ^^.
mardi 3 juin 2008 à 16:04:11 | Re : Classe de gestions de requêtes mysql

choy

woops, le formatage crain ^^ je vous copie tout là : http://cahnory.free.fr/class_mysql.rtf


Cette discussion est classée dans : table, string, mysql, query, value


Répondre à ce message

Sujets en rapport avec ce message

updater plusieurs lignes en meme temps [ par plasticode ] here i come again.voilà je mets en place une page modif.php qui fait appel àune base de données mysql avec plusieurs tables liées.Mes mises a jour fon je comprends pas le probleme [ par Teclis01 ] voici l erreur:Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in c:\program files\easyphp1-7\www\creerfacture.ph Comparer des valeurs d'une table avec une autre table selon la ligne [ par lildan ] Bonjour tout le monde,voici le code que j'utilise pour vérifier si une valeur d'une table égale la valeur d'une autre table: $query = "SELECT * FROM v php/mysql requete plusieurs tables et bases [ par fredo35m ] Bonjour,j'aimerais savoir comment faire pour requeter sur plusieurs tables et bases, je m'explique :BASE 1:Requête 1 : Sélection des CODES COMMUNES se recherche d une id sur 3 tables [ par Teclis01 ] voici l'erreurParse error: parse error, unexpected T_ELSE voici le code!$table="etcitem";  $query = "SELECT * FROM $table WHERE item_id= $item";  $res requete SQL avec array [ par joebuz ] Bonjour a tous,Voila j'ai plusieurs requete SQL a suivre qui sont identiques a part la valeur du champ qui changent, je me demandais s'il n'etais pas recuperer donnees de deux table dans une boucle [ par bubbledesavon ] bonjour,voici mon souci ,ja i cree un petit moteur de recherche par date,qui fonctione tres bien ,mais ou ,dans le resultat , j aimerais y ajouter une problème de variable dans une requete mysql [ par Moritus ] bonjour, j'ai quelques petits problèmes avec un bout de code. habituellement j'utilise $data['texte'] pour récupéré le contenu d'un champ de ma t Requête sur une table dépendant d'une autre requête [ par phil7799 ] Bonjour, j'essaye de faire une requête qui dépend du résultat d'une autre requête mais je n'y parviens pas.Dans une table, "popularite" j'extrais les Verouillage d'une table (Table lock) [ par tweeder ] Bonjour à tous,J'ai une table dans laquelle je dois m'assurer que chaque enregistrement est sélectionné/supprimé seulement par un process PHP.Pour m'a


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 2,714 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales