Class langage sql

Soyez le premier à donner votre avis sur cette source.

Vue 8 833 fois - Téléchargée 933 fois

Description

Ce code vous permet de vous connecter à une base de données SQL, elle utilise des fonctions simple comme : sql_query, sql_fetchrow...
L'utilisation de ces classes permet d'écrire un code et de changer facilement de base de données sans pour autant récrire tout un code (vu que les fonctions de base de php changent).

Ici, j'ai mis l'utilisation des librairies suivantes :
- mySQL (3.x, 4.1)
- mySQLi (4.1.2+)

Dans ces librairies se trouvent les fonctions qui sont utiles, vous pouvez en coder d'autres à votre guise.
Vous pouvez aussi faire d'autres librairies en vous basant sur celles-ci.

Ainsi, si un jour vous changez d'hébergeur ou que tout simplement la base de données est différente, vous n'aurez qu'à faire un include différent de fichier pour l'utiliser.

Source / Exemple :


<?php
// mySQLi se trouvent dans le .zip
?>

<?php
/***********************************************************

  • mysql.php
  • -----------------
  • Created : Wed, Nov 19, 2003
  • Copyright : (C) LookStrike Team
  • WebSite : http://www.lookstrike.com
*
  • $Id: mysql.php,v 1.6 2004/09/26 05:23:55 jsgoupil Exp $
*
                                                                                                                      • /
if(!defined('IN_LS'))die("You are not allowed to access to this page."); // Description: mySQL4.1 (mySQL) class db { var $link=0; var $num_queries=0; var $query_result; function db($db_host,$db_user,$db_pass,$db_name) { if(constant('NO_DB')==0){ $this->link = mysql_connect($db_host,$db_user,$db_pass,true); @mysql_select_db($db_name,$this->link); } } function sql_close(){ if($this->link) return mysql_close($this->link); else return false; } function sql_query($query){ unset($this->query_result); $this->num_queries++; $this->query_result = mysql_query($query, $this->link); if($this->query_result) return $this->query_result; else return false; } function sql_numrows($query_id=0){ if(!$query_id) $query_id=$this->query_result; return ($query_id)?mysql_num_rows($query_id):false; } function sql_affected(){ return ($this->link)?mysql_affected_rows($this->link):false; } function sql_dataseek($query_id=0, $num_row){ if(!$query_id) $query_id = $this->query_result; if($query_id) return mysql_data_seek($query_id,$num_row); else return false; } function sql_fetchrow($query_id=0,$special=true) { if(!$query_id) $query_id = $this->query_result; if($query_id){ $result = mysql_fetch_array($query_id, MYSQL_ASSOC); if($special==true) transform_specialchars($result); return $result; } else return false; } function sql_fetchrowset($query_id=0,$special=true) { if(!$query_id) $query_id = $this->query_result; if($query_id){ $temp = 0; $result = array(); $this->sql_dataseek($query_id, 0); while($temp = mysql_fetch_array($query_id, MYSQL_ASSOC)) $result[] = $temp; if($special==true) transform_specialchars($result); $this->sql_dataseek($query_id, 0); return $result; } else return false; } function sql_insertid(){ return ($this->link)?mysql_insert_id($this->link):false; } function sql_listtables($db_name){ $tables_list = array(); $temp_result = mysql_list_tables($db_name); while($temp_data = mysql_fetch_row($temp_result)) $tables_list[] = $temp_data[0]; return $tables_list; } function sql_error(){ $result['message'] = mysql_error($this->link); $result['code'] = mysql_errno($this->link); return $result; } function get_version(){ $version_result = $this->sql_query("SELECT VERSION() AS version"); $version_data = $this->sql_fetchrow($version_result); return $version_data['version']; } } ?>

Conclusion :


Donc pour utiliser ce script vous faites ceci :
$db = new db($hostname,$username,$password,$database);

pour un query :
$result = $db->sql_query("SELECT field1,field2 FROM table WHERE field3=4");

Pour obtenir les lignes :
$line = $db->sql_numrows($result);

Data, si vous n'attendez qu'une seule ligne :
$data = $db->sql_fetchrow($result);

Si vous savez qu'il y a plusieurs lignes (sera dans un tableau [0]['field1']... [1]['field1']...)
$data = $db->sql_fetchrowset($result);

Donc pour traiter ces dernières informations :
for($i=0;$i<$line;$i++)
echo $data[$i]['field1']."\n";

Étant donné que nous ne sommes pas en PHP5, il est préférable de nous même appeler la fonction close :
$db->sql_close();

Vous pouvez regarder dans le fichier les autres fonctions utiles qui sont écrites.
Personnellement, j'utilise ce script tout le temps. Je vous conseil d'en faire autant pour un développement de niveau plus élevé qu'amateur ou tout simplement pour vous simplifier la vie :)

Explication des Constantes
IN_LS -> signifie que vous devez avoir fait un define de cette fonction avant de charger le fichier. Ceci permet de ne pas directement accèder à mysql.php par exemple. Vous pouvez enlever cette ligne si vous le souhaitez.
NO_DB -> signifie que si vous mettez à true cette variable, la db ne sera pas créé (si jamais vous avez des problème de db...)

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

pifou25
Messages postés
150
Date d'inscription
lundi 13 octobre 2003
Statut
Membre
Dernière intervention
21 décembre 2014

bonjour,
bon boulot :) j'ai fait un peu la meme chose (comme quoi j'aurais du chercher avant de me lancer) mais j'ai utilisé une interface et 2 classes qui l'implémentent. des fonctionnalités objet du php5.
http://codes-sources.commentcamarche.net/source/100816-classe-pour-poser-et-valider-un-formulaire
je vais m'inspirer aussi de ton boulot pour m'améliorier ;) et aussi j'envisage d'ajouter la prise en compte de pdo.
cs_Merzhin56
Messages postés
4
Date d'inscription
lundi 4 août 2008
Statut
Membre
Dernière intervention
13 août 2008

Je n'ai pas encore testé, mais source propre, claire, simple, et fonctionnelement c'est exactement ce que j'aurai codé si je n'avais pas trouvé cette source.

Il me reste à la tester, mais merci beaucoup pour ce code.
phpajax
Messages postés
27
Date d'inscription
lundi 8 octobre 2007
Statut
Membre
Dernière intervention
17 octobre 2007

et je mettrais bien
mysql_free_result($result);
dans la fonction sql_dataseek
phpajax
Messages postés
27
Date d'inscription
lundi 8 octobre 2007
Statut
Membre
Dernière intervention
17 octobre 2007

bonsoir,

$line = $db->sql_numrows($result);
$data = $db->sql_fetchrow($result);

for($i=0;$i<$line;$i++)
echo $data[$i]['field1']."\n";

----> deux connections a la base, alors qu'on peut eviter la première en mettant $data[$i] a la place de $i<$line et enlever la ligne $line = $db->sql_numrows($result); ;)

--->
for($i=0;isset($data[$i]);$i++)
echo $data[$i]['nom']."\n";

sinon, très belle source !
dpozega
Messages postés
1
Date d'inscription
mardi 4 novembre 2003
Statut
Membre
Dernière intervention
12 septembre 2007

Bonjour, très sympa cette class mais il manque une fonction mysqli_free_result non ?

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.