 | | Offres d'emplois |  | Développeurs PHP/MYSQL H/F Owlient est une société en forte croissance concevant des jeux en ligne pour des communautés de passionnés.
Sur le sujet de l'équitation, le prem... | |
 | | Avez vous lu ? |  | | |
|
 Une Classe pour gérer MySQL | |  |

<?php
class MYSQL {
// --- variables
// -- nom de la base utilisée
var $db = "xxxx";
// --- host ou IP pour connexion à la base
var $db_host = 'localhost';
// --- user utilisé pour la connexion à la base
var $db_user = 'xxxx';
// --- mot de passe utilisé pour la connexion à la base
var $db_pass = 'xxxx';
// --- mode pour afficher les messages de mise au point
var $debug_mode = 1;
// --- lien MySQL
var $db_link;
// --- utilisation des fonctions mysqli
var $use_mysqli = 0;
// --- fonction d'initialisation lancée automatiquement
// --- à l'appel de la classe
function MYSQL() {
// --- verification de l'extension mysqli
if ($this->use_msqli) {
if (!$this->test_mysqli()) $this->use_msqli = 0;
}
// --- connexion à la base
if ($this->use_msqli) {
$this->db_link = mysqli_connect(
$this->db_host, $this->db_user, $this->db_pass);
}
else {
$this->db_link = mysql_connect(
$this->db_host, $this->db_user, $this->db_pass);
}
if (!$this->db_link)
$this->display_mysql_error('connexion_sql');
}
// --- affichage des erreurs
function display_mysql_error($texte) {
if ($this->debug_mode) {
echo "<b>$texte</b> erreur:";
if ($this->use_mysqli) echo mysqli_error();
else echo mysql_error();
echo "<br>\n";
}
}
// --- teste si l'extension mysqli est disponible
function test_mysqli() {
if (!extension_loaded('mysqli')) {
if (!dl('mysqli.so')) {
return FALSE;
}
}
return TRUE;
}
function fetch_array($result, $p=NULL) {
if ($this->use_msqli) {
$result = mysqli_fetch_array($result, $p);
}
else {
$result = mysql_fetch_array($result, $p);
}
return($result);
}
// --- fonction pour faire une requête SQL
function requete_sql($db, $cde) {
if ($this->use_msqli) {
$db_selected = mysqli_select_db($db, $this->db_link);
$result = mysqli_query($cde, $this->db_link);
}
else {
$db_selected = mysql_select_db($db, $this->db_link);
$result = mysql_query($cde, $this->db_link);
}
if (!$result) $this->display_mysql_error('requete_sql');
return($result);
}
// --- création d'une requête d'insertion dans une table
function creation_requete_insertion(
$tbl, $tbinfos, $params='') {
if (!$tbl || !is_array($tbinfos) || count($tbinfos)==0) {
return('');
}
if (!is_array($params)) $params = array();
// --- tableau des champs existants dans la table
$tb_champs = $this->tb_champs($this->db, $tbl);
// --- creation des tableaux des champs et des valeurs
reset($tbinfos);
$txt_champs = '';
$txt_valeurs = '';
$i = 0;
while (list($cle, $valeur) = each($tbinfos)) {
// --- ajout dans la requete si le champ existe
if ($tb_champs["$cle"] == 1) {
if ($i >0) {
$txt_champs .= ',';
$txt_valeurs .= ',';
}
$txt_champs .= $cle;
$c = $this->quote_smart($valeur);
if (!is_numeric($valeur)) {
$txt_valeurs .= "'$c'";
}
else {
$txt_valeurs .= $c;
}
$i++;
}
}
// --- creation de la requete
if ($params['replace'] == 1) {
$requete = "replace into $tbl ($txt_champs)";
$requete .= " values ($txt_valeurs)";
}
else {
$requete = "insert into $tbl ($txt_champs)";
$requete .= " values ($txt_valeurs)";
}
return($requete);
}
// --- création d'une requête de modification dans une table
function creation_requete_modification($tbl,
$tbinfos, $id, $params='') {
$id = intval($id);
if (!$tbl
|| !is_array($tbinfos)
|| count($tbinfos)==0
|| !$id) {
return('');
}
if (!is_array($params)) $params = array();
// --- tableau des champs existants dans la table
$tb_champs = $this->tb_champs($this->db, $tbl);
// --- début de la requête
$txt_requete = "update $tbl";
// --- création des tableaux de champs et de valeurs
reset($tbinfos);
$i = 0;
while (list($cle, $valeur) = each($tbinfos)) {
// --- ajout dans la requête si le champ existe
if ($tb_champs["$cle"] == 1) {
if ($i == 0) {
$txt_requete .= ' set ';
}
else {
$txt_requete .= ',';
}
$valeur = $this->quote_smart($valeur);
$txt_requete .= "$cle='$valeur'";
$i++;
}
}
// --- clé primaire
if (strlen($params['cle_primaire']) > 0) {
$cle_primaire = $params['cle_primaire'];
}
else {
$cle_primaire = 'id';
}
// --- conditions
$txt_requete .= " where $cle_primaire=$id";
return($txt_requete);
}
// --- requête sql de sélection automatique
function auto_sql($table, $tb_params='', $tb_conditions='') {
$tb = array();
if (!is_array($tb_conditions)) $tb_conditions = array();
// --- valeurs automatiques
if (strlen($tb_params['what_to_select']) == 0) {
$tb_params['what_to_select'] = '*';
}
$tb_params["nb_start"] = intval($tb_params["nb_start"]);
$tb_params["nb_max"] = intval($tb_params["nb_max"]);
if ($tb_params["page"]>0 && $tb_params["nb_items_page"]>0) {
$tb_params["nb_start"] = ($tb_params["page"] - 1)
* $tb_params["nb_items_page"];
$tb_params["nb_max"] = $tb_params["nb_start"]
+ $tb_params["nb_items_page"];
}
// --- requête
$cde = 'select ' . $tb_params['what_to_select']
. ' from ' . $tb_params['which_tables']
. ' where 1';
for ($i=0; $i<count($tb_conditions); $i++) {
$cde .= ' ' . $tb_conditions[$i];
}
if (strlen($tb_params["group_by"]) > 0) {
$cde .= " group by " . $tb_params["group_by"];
}
if (strlen($tb_params["order_by"]) > 0) {
$cde .= " order by " . $tb_params["order_by"];
}
if (intval($tb_params["nb_max"]) > 0) {
$cde .= " limit " . $tb_params["nb_start"]
. ',' . $tb_params["nb_max"];
}
// --- renvoi de la commande SQL
return($cde);
}
// --- tableau des champs disponibles dans une table
function tb_champs($base, $table) {
$tb = array();
if ($this->use_mysqli) {
$result = mysqli_list_fields($base, $table);
$n = mysqli_num_fields($result);
for ($i=0; $i<$n; $i++) {
$name = mysqli_field_name($result, $i);
$tb["$name"] = 1;
}
}
else {
$result = mysql_list_fields($base, $table);
$n = mysql_num_fields($result);
for ($i=0; $i<$n; $i++) {
$name = mysql_field_name($result, $i);
$tb["$name"] = 1;
}
}
return($tb);
}
// --- fonction de protection d'une requête SQL
function quote_smart($valeur) {
if (phpversion() < "4.3.0") {
$valeur = addslashes($valeur);
}
else {
// --- stripslashes
if (get_magic_quotes_gpc()) {
$valeur = stripslashes($valeur);
}
// --- protection si ce n'est pas un entier
if (!is_numeric($valeur)) {
if ($this->use_mysqli)
$valeur = mysqli_real_escape_string($valeur);
else $valeur = mysql_real_escape_string($valeur);
}
}
return $valeur;
}
}
?>
|
|
|
 |
|