Login   Register  
PHP Classes
elePHPant
Icontem

File: Connection

Recommend this page to a friend!
Stumble It! Stumble It! Bookmark in del.icio.us Bookmark in del.icio.us
  Classes of artot  >  Connection base de donnée avec PDO  >  Connection  
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
 

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_QUERYtrue);
            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';
?>