Astuces php
Accueil
  News 
 Scripts 
 Bouquins 
 Newsletter 
  Emplois 
 Annuaire 
 Forum 
 
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...
 
 C'est ici
 
Avez vous lu ?
PHP 5 Astuces d'experts
Avez vous lu ? -> PHP 5 Astuces d'experts : Cet ouvrage, utile et pratique, délivre aux utilisateurs initiés des astuces toutes plus utiles les unes que les autres sur PHP 5. Il permet entre autre d’apprendre à envoyer un e-mail aux formats texte et HTML, de récupérer la date de la dernière visite d’un utilisateur, de générer un cookie, de...
 
 Commander
 
 Chapitres - MySQL
PHP 5 Astuces d'experts -> MySQL -> Une Classe pour gérer MySQL Une Classe pour gérer MySQL
 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"]>&& $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;
  }

}
?>
 Rechercher
Tapez un mot ou une phrase clé
 

 Téléchargement
Téléchargez les sources de l'ouvrage
PHP 5 solutions et composants open-source
Téléchargez les sources de l'ouvrage  -> PHP 5 solutions et composants open-source : Boostez et améliorez vos sites PHP avec des composants et extensions !

Voici enfin l'ouvrage pour améliorer votre site sans tout réécrire. Pourquoi réinventer la roue puisqu'il existe une multitude de composants indépendants à intégrer à votre site ou même des extensions au langage PHP qui peu...
 


copyright astuces-php.info - Plan du site - Mylinea.org : l'annuaire des annuaires - échange de liens - Faites du fric