Class langage sql

Soyez le premier à donner votre avis sur cette source.

Vue 8 995 fois - Téléchargée 965 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 144 Date d'inscription lundi 13 octobre 2003 Statut Membre Dernière intervention 21 décembre 2014
14 déc. 2014 à 23:53
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
17 août 2008 à 16:34
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
11 oct. 2007 à 01:11
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
11 oct. 2007 à 01:02
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
12 sept. 2007 à 08:49
Bonjour, très sympa cette class mais il manque une fonction mysqli_free_result non ?
Afficher les 43 commentaires

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.