PHP Classes

File: Connection

Recommend this page to a friend!
  Classes of artot   Connection base de donnée avec PDO   Connection   Download  
File: Connection
Role: Example script
Content type: text/plain
Description: classe pdo
Class: Connection base de donnée avec PDO
Manage MySQL database connections using PDO
Author: By
Last change: [CHANGEMENT MINEUR]edition du mot de passe
Date: 15 years ago
Size: 5,210 bytes
 

Contents

Class file image Download
<?php
#########################################################################################################
////////////////////////////////// /************************************************/ #
// # # // /* ***** class par Xavier Artot alias x@v */ #
// # ## // /* ***** artotal@gmail.com ****************/ #
// ### ##### // /* ***** cette classe permet d'avoir une **/ #
// # ### ####### // /* ***** **********************************/ #
// ######## # // /* ***** couche d'abstraction avec ********/ #
// ####### // /* ***** sécuriation en utilisant *********/ #
// # ######### // /* ***** des requêtes préparés ***********/ #
// ###### ### # // /* ***** et des tranctions auto-commit*****/ #
// ### ### // /* ******************************************/ #
// # # // /* ******************************************/ #
// ### // /* ******************************************/ #
// ####### ## // /* ******************************************/ #
// ######### #### // /************************************************/ #
// ## ## # ## // #
// # ## # // #
// ## # ## // #
// ############### // #
// ############## // #
// # // #
// // #
// # // #
// ### // #
// ####### // #
// ########## // #
// ########## // #
// ######## // #
// ### // #
// #### # // #
// #### // #
// # // #
////////////////////////////////// #
#########################################################################################################
require_once('message.class.php');
class
Connection extends PDO
{
    private
$db = 'boutique'; // base de données
   
private $host = 'localhost'; // adresse de la base
   
private $user = 'root'; // nom
   
private $pwd = ''; // mot de passe
   
private $con; //
   
private $select; // requette de séléction
   
private $execute; // requette d'execution
   
private $email='artotal@gmail.com'; // email de l'admin du site
   
private $dns;
     
    public function
__construct ()
    {
        try
        {
           
$this->con = parent::__construct($this->getDns(), $this->user, $this->pwd);
           
// pour mysql on active le cache de requête
           
if($this->getAttribute(PDO::ATTR_DRIVER_NAME) == 'mysql')
               
$this->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, true);
            return
$this->con;
        }
        catch(
PDOException $e) {
           
//On indique par email qu'on n'a plus de connection disponible
           
error_log(date('D/m/y').' à '.date("H:i:s").' : '.$e->getMessage(), 1, $this->email);
           
$message= new Message();
           
$message->outPut('Erreur 500', 'Serveur de BDD indisponible, nous nous excusons de la gêne occasionnée');
        }
    }
   
    public function
select($reqSelect)
    {
        try
        {
           
$this->con = parent::beginTransaction();
           
//$result= parent::query($reqSelect);
           
$result = parent::prepare($reqSelect);
           
$result->execute();
           
$this->con = parent::commit();
           
// ou
            // $this->con = parent::rollBack();
             
return $result;
        }
        catch (
Exception $e)
        {
           
//On indique par email que la requête n'a pas fonctionné.
           
error_log(date('D/m/y').' à '.date("H:i:s").' : '.$e->getMessage(), 1, 'artotal@gmail.com');
           
$this->con =parent::rollBack();
           
$message= new Message();
           
$message->outPut('Erreur dans la requêtte', 'Votre requête a été abandonné');
        }
    }
   
   
// renvoie un tableau que l'on peux travailler avec count($result)...
   
public function selectTableau($reqSelect)
    {
       
$result = parent::prepare($reqSelect);
       
$result->execute();
       
/* Récupération de toutes les lignes d'un jeu de résultats "équivalent à mysql_num_row() " */
       
$resultat = $result->fetchAll();
        return
$resultat;
    }

   
// on change le type de base ici
   
public function getDns()
    {
        return
'mysql:dbname='.$this->db.';host='.$this->host;
    }
}

// * SIMPLE EXEMPLE *
////////////////////////////////////////////
$connection = new Connection();
$sql="SELECT * FROM categorie";
$result= $connection->select($sql);
foreach (
$result as $row)
{
    echo
$row['description'].'<br>';
}
////////////////////////////////////////////
// * COUNT RESULT EXEMPLE *
$sql="SELECT id_categorie FROM produits WHERE id_categorie='$id'";
$result = $connection->selectTableau($sql);
if (
count($result) == 1)
    echo
count($result).' produit';
elseif (
count($result) > 0)
    echo
count($result).' produits';
else
    echo
'aucun produit';
?>