|
Trouver une ressource
Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !
CLASSE DE CONNEXION À UNE BASE DE DONNÉE MYSQL
Information sur la source
Description
Voila c'est la toute premiere source que je poste, j'ai fait cette classe pour commencer la programmation objet en PHP, j'ai voulu respecter le design pattern Singleton. J'aimerais avoir le maximum d'avis sur le code ( proposez des optimisations possible, me signaler des maladroitesses de programmation) et sur la conception (respect du Singleton, utilisation de la notion d'objets). Je penseque le code est assez documenté mais si vous avez des questions n'hesitez pas à meles posez. Merci Zefyre
Source
- <?php
- /*
- *
- * Auteur: Zefyre
- *
- * Fichier: connexion.php
- *
- * Date: 24 mar. 07
- *
- */
-
- class Connexion {
- /**
- * *La classe Connexion permet lors d'une instanciaction de créer une connexion a une base de données, à partir d'un nom d'hote(serveur), un nom d'utilisateur et d'un mot de passe de selecionner la base d'étude et de détruire la connexion. Pour s'assurer qu'une seule connection est établie à la base on déclare le constructeur de la classe privé et l'unique facon de créer un objet et d'utiliser la seule méthose public getConnection qui verifie l'unicité de la connection ce schema s'inspire du pattern Singleton dessiné en uml:
- */
- /* |+++++++++++++++++++|
- | Singleton |
- |+++++++++++++++++++|
- | -instance: |
- | Connection |
- | (static) |
- | |
- |+++++++++++++++++++|
- | -Singleton() |
- | +getInstance() |
- | (static) |
- |+++++++++++++++++++|
-
- */
- /**
- * Une connection est definie par:
- * -Un identifiant de connexion (id)
- * -Un nom de serveur (host)
- * -Un nom d'utilisateur (user)
- * -Un mot de passe (pass)
- * -Une base visée (base)
- * -Une instance de Connexion (instance)
- *
- */
-
- /**
- * *L'identifiant de connexion
- */
- private $id;
- /**
- * *Le nom d'hote
- */
- private $host;
- /**
- * *Le nom d'utilisateur
- */
- private $user;
- /**
- * *Le mot de passe
- */
- private $pass;
- /**
- * *Le nom de de la base d'etude
- */
- private $base;
- /**
- * *Une instance static de Connexion
- */
- private static $instance;
-
- /**
- * *Constructeur de la classe Connexion
- */
- private function __construct($host, $user, $pass, $base)
- {
- $this->setHost($host); //Les differents setter
- $this->setUser($user); //Methodes permettant l'acces en erciture des variables
- $this->setPass($pass);
- $this->setBase($base);
-
- try {
- $this->id = $this->connect($this->host, $this->user, $this->pass);
- } //Tentative de connexion à la base
- catch (Exception $e) { // Gestion de l'exception
- header("Location:./erreur.php?erreur='" . $e->getMessage() . "'&code='1'"); //Redirection et affichage du message, du fichier et de la ligne d'origine de l'exception
- // DEBUGAGE echo $e->getMessage().'<br>Fichier: '.$e->getFile().'<br>Ligne: '.$e->getLine();
- }
-
- try {
- $this->selection($base, $this->id);
- } //Tentative de selection de la base
- catch (Exception $e) {
- header("Location:./erreur.php?erreur='" . $e->getMessage() . "'&code='1'");
- // DEBUGAGE echo $e->getMessage().'<br>Fichier: '.$e->getFile().'<br>Ligne: '.$e->getLine();
- }
- }
-
- /**
- * *Permet de modifier la valeur de la variable host
- */
- private function setHost($host)
- {
- if (!isset($host)) // test si lavariable est initialisé
- header("Location:./erreur.php?erreur='serveur_vide'&code='1'"); //Si non -> redirection
- else
- $this->host = $host; //Si oui affectation
- }
-
- /**
- * *Permet de modifier la valeur de la variable user
- */
- private function setUser($user)
- {
- if (!isset($user))
- header("Location:./erreur.php?ereur='user_vide'&code='1'");
- else
- $this->user = $user;
- }
-
- /**
- * *Permet de modifier la valeur de la variable pass
- */
- private function setPass($pass)
- {
- if (!isset($pass))
- header("Location:./erreur.php?erreur='pass_vide'&code='1'");
- else
- $this->pass = $pass;
- }
-
- /**
- * *Permet de modifier la valeur de la variable base
- */
- private function setBase($base)
- {
- if (!isset($base))
- header("Location:./erreur.php?erreur='base_vide'&code='1'");
- else
- $this->base = $base;
- }
-
- /**
- * *Permet de selectionner une base
- */
- private function selection ($base, $db)
- {
- $ret = mysql_select_db($base, $db); //fonction de selection PHP
- if (isset($ret) && empty($ret)) // Test si le code de retour de la fonction est existant et vide
- throw new Exception("selection_base_impossible"); //Gestion de l'erreur
- return $ret;
- }
-
- /**
- * *Permet de se connecter a la base de données MySQL
- */
- private function connect($host, $user, $pass)
- {
- $ret = mysql_connect($host, $user, $pass) or die(); //fonction de connexion a la base
- if (isset($ret) && empty($ret))
- throw new Exception("connexion_base_impossible");
- return $ret;
- }
-
- /**
- * *Permet d'obtenir une instance de Connection
- */
- public static function getConnexion($host, $user, $pass, $base)
- {
- if ((!isset($instance))) // Si aucune instance de Connexion
- $instance = new Connexion($host, $user, $pass, $base); //Alors on en créer une
- return $instance; //Dans tous les cas on retourne une instance (soit la nouvelle soit l'existante)
- }
-
- /**
- * *Execute une requete SQL qui ne ne retourne aucun resultat (INSERT,UPDATE,DELETE).
- */
- public function execute($requete)
- {
- if (!isset($this->id) && empty($this->id)) // Test si une connexion existe si elle n'existe pas
- $this->getConnexion($host, $user, $pass, $base); //on essaye dans créer une.
- else {
- if (!isset($requete) && empty($requete))
- header("Location:./erreur.php?erreur='requete_invalide'&code='1'");
- else {
- try {
- mysql_query($requete) or die("Erreur" . mysql_error());
- }
- catch(Exception $e) {
- header("Location:./erreur.php?erreur='requete_impossible'&code='1'");
- }
- }
- }
- }
-
- /**
- * *Retourne le nombre de lignes affectées par la dernière opération SQL.
- */
- public function getNbLignes()
- {
- if (!isset($this->id) && empty($this->id)) // Test si une connexion existe si elle n'existe pas
- $this->getConnexion($host, $user, $pass, $base); //on essaye dans créer une.
- else
- return mysql_affected_rows($this->id); //On retourne le nombre de lignes
- }
-
- /**
- * *Retourne le resultat brut d'une selection
- */
- public function select($req)
- {
- if (!isset($this->id) && empty($this->id)) // Test si une connexion existe si elle n'existe pas
- $this->getConnexion($host, $user, $pass, $base); //on essaye dans créer une.
- else {
- if (!isset($req) && empty($req))
- header("Location:./erreur.php?erreur='requete_invalide'&code='1'");
- else {
- try {
- $resultat = mysql_query($req);;
- }
- catch(Exception $e) {
- header("Location:./erreur.php?erreur='requete_impossible'&code='1'");
- }
- return $resultat;
- }
- }
- }
-
- /**
- * *Destructeur de la classe Connection
- */
- public function __destruct()
- {
- if ( !isset($this->instance) && empty($this->instance)) //On ne détruit l'instance que si elle existe
- {
- try
- {
- mysql_close($this->id);
- }
- catch(Exception $e)
- {
- header("Location:./erreur.php?erreur='fermeture_impossible'&code='1'");
- }
- }
- else
- header("Location:./erreur.php?erreur='fermeture_impossible'&code='1'");
- }
- }
-
- ?>
<?php
/*
*
* Auteur: Zefyre
*
* Fichier: connexion.php
*
* Date: 24 mar. 07
*
*/
class Connexion {
/**
* *La classe Connexion permet lors d'une instanciaction de créer une connexion a une base de données, à partir d'un nom d'hote(serveur), un nom d'utilisateur et d'un mot de passe de selecionner la base d'étude et de détruire la connexion. Pour s'assurer qu'une seule connection est établie à la base on déclare le constructeur de la classe privé et l'unique facon de créer un objet et d'utiliser la seule méthose public getConnection qui verifie l'unicité de la connection ce schema s'inspire du pattern Singleton dessiné en uml:
*/
/* |+++++++++++++++++++|
| Singleton |
|+++++++++++++++++++|
| -instance: |
| Connection |
| (static) |
| |
|+++++++++++++++++++|
| -Singleton() |
| +getInstance() |
| (static) |
|+++++++++++++++++++|
*/
/**
* Une connection est definie par:
* -Un identifiant de connexion (id)
* -Un nom de serveur (host)
* -Un nom d'utilisateur (user)
* -Un mot de passe (pass)
* -Une base visée (base)
* -Une instance de Connexion (instance)
*
*/
/**
* *L'identifiant de connexion
*/
private $id;
/**
* *Le nom d'hote
*/
private $host;
/**
* *Le nom d'utilisateur
*/
private $user;
/**
* *Le mot de passe
*/
private $pass;
/**
* *Le nom de de la base d'etude
*/
private $base;
/**
* *Une instance static de Connexion
*/
private static $instance;
/**
* *Constructeur de la classe Connexion
*/
private function __construct($host, $user, $pass, $base)
{
$this->setHost($host); //Les differents setter
$this->setUser($user); //Methodes permettant l'acces en erciture des variables
$this->setPass($pass);
$this->setBase($base);
try {
$this->id = $this->connect($this->host, $this->user, $this->pass);
} //Tentative de connexion à la base
catch (Exception $e) { // Gestion de l'exception
header("Location:./erreur.php?erreur='" . $e->getMessage() . "'&code='1'"); //Redirection et affichage du message, du fichier et de la ligne d'origine de l'exception
// DEBUGAGE echo $e->getMessage().'<br>Fichier: '.$e->getFile().'<br>Ligne: '.$e->getLine();
}
try {
$this->selection($base, $this->id);
} //Tentative de selection de la base
catch (Exception $e) {
header("Location:./erreur.php?erreur='" . $e->getMessage() . "'&code='1'");
// DEBUGAGE echo $e->getMessage().'<br>Fichier: '.$e->getFile().'<br>Ligne: '.$e->getLine();
}
}
/**
* *Permet de modifier la valeur de la variable host
*/
private function setHost($host)
{
if (!isset($host)) // test si lavariable est initialisé
header("Location:./erreur.php?erreur='serveur_vide'&code='1'"); //Si non -> redirection
else
$this->host = $host; //Si oui affectation
}
/**
* *Permet de modifier la valeur de la variable user
*/
private function setUser($user)
{
if (!isset($user))
header("Location:./erreur.php?ereur='user_vide'&code='1'");
else
$this->user = $user;
}
/**
* *Permet de modifier la valeur de la variable pass
*/
private function setPass($pass)
{
if (!isset($pass))
header("Location:./erreur.php?erreur='pass_vide'&code='1'");
else
$this->pass = $pass;
}
/**
* *Permet de modifier la valeur de la variable base
*/
private function setBase($base)
{
if (!isset($base))
header("Location:./erreur.php?erreur='base_vide'&code='1'");
else
$this->base = $base;
}
/**
* *Permet de selectionner une base
*/
private function selection ($base, $db)
{
$ret = mysql_select_db($base, $db); //fonction de selection PHP
if (isset($ret) && empty($ret)) // Test si le code de retour de la fonction est existant et vide
throw new Exception("selection_base_impossible"); //Gestion de l'erreur
return $ret;
}
/**
* *Permet de se connecter a la base de données MySQL
*/
private function connect($host, $user, $pass)
{
$ret = mysql_connect($host, $user, $pass) or die(); //fonction de connexion a la base
if (isset($ret) && empty($ret))
throw new Exception("connexion_base_impossible");
return $ret;
}
/**
* *Permet d'obtenir une instance de Connection
*/
public static function getConnexion($host, $user, $pass, $base)
{
if ((!isset($instance))) // Si aucune instance de Connexion
$instance = new Connexion($host, $user, $pass, $base); //Alors on en créer une
return $instance; //Dans tous les cas on retourne une instance (soit la nouvelle soit l'existante)
}
/**
* *Execute une requete SQL qui ne ne retourne aucun resultat (INSERT,UPDATE,DELETE).
*/
public function execute($requete)
{
if (!isset($this->id) && empty($this->id)) // Test si une connexion existe si elle n'existe pas
$this->getConnexion($host, $user, $pass, $base); //on essaye dans créer une.
else {
if (!isset($requete) && empty($requete))
header("Location:./erreur.php?erreur='requete_invalide'&code='1'");
else {
try {
mysql_query($requete) or die("Erreur" . mysql_error());
}
catch(Exception $e) {
header("Location:./erreur.php?erreur='requete_impossible'&code='1'");
}
}
}
}
/**
* *Retourne le nombre de lignes affectées par la dernière opération SQL.
*/
public function getNbLignes()
{
if (!isset($this->id) && empty($this->id)) // Test si une connexion existe si elle n'existe pas
$this->getConnexion($host, $user, $pass, $base); //on essaye dans créer une.
else
return mysql_affected_rows($this->id); //On retourne le nombre de lignes
}
/**
* *Retourne le resultat brut d'une selection
*/
public function select($req)
{
if (!isset($this->id) && empty($this->id)) // Test si une connexion existe si elle n'existe pas
$this->getConnexion($host, $user, $pass, $base); //on essaye dans créer une.
else {
if (!isset($req) && empty($req))
header("Location:./erreur.php?erreur='requete_invalide'&code='1'");
else {
try {
$resultat = mysql_query($req);;
}
catch(Exception $e) {
header("Location:./erreur.php?erreur='requete_impossible'&code='1'");
}
return $resultat;
}
}
}
/**
* *Destructeur de la classe Connection
*/
public function __destruct()
{
if ( !isset($this->instance) && empty($this->instance)) //On ne détruit l'instance que si elle existe
{
try
{
mysql_close($this->id);
}
catch(Exception $e)
{
header("Location:./erreur.php?erreur='fermeture_impossible'&code='1'");
}
}
else
header("Location:./erreur.php?erreur='fermeture_impossible'&code='1'");
}
}
?>
Sources de la même categorie
Sources en rapport avec celle ci
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
Parametre de ma classe connexion et connexion/deconnexion [ par sebos63 ]
Bonjour, 1. J'ai une classe de connexion et je souhaiterais savoir où il est judicieux de spécifier les paramètres d'une connexion. (Dans mon construc
connexion mysql avec mot de passe crypté [ par vincenteraptor ]
Bonjour,J aurai voulu savoir sil etait possible de se connecter à un base de données via un password déja crypté avec le cryptage de mysql??exemple :
Problème de création de table Mysql [ par perig ]
BonjourVoilà je cherche à créer une table dans ma base Mysql (je suis chez free).Mon programme fonctionne (je consulte tous les codes d'erreur et tout
Pb de script entre php et mysql pour afficher une table [ par FloTheShark ]
Salut à tous Voilà g free, donc host, sql.free.fr et ainsi de suite je veux faire afficher une table(ce qu'il y a à l'intérie
besoin d'1 info sur connexion/deconnexion a mysql [ par simsai ]
Hello a tous,Je suis entrain de réaliser un site web en php dans lequel j'appelle des fonctions php d'insertion,suppression,update,...Pour chacune de
tjr probleme de sessions. [ par Zebra1928 ]
Hi all;j'ai toujours un probleme de sessions.qlq peut m'aider SVP ??, mon code est le suivant:********************************************************
probleme de connexion [ par gromito ]
Je suis chez multimania et j ai un petit probleme de connexion a ma base de donnée si quelqu u n pouveit m aider. Mon code est le suivant: <
probleme de connexion à base mysql [ par loutwice ]
salut!ben voilà le problème:j'ai fait des pages en php gérant les sesions et tout et tout....et quan je veux les réutiliser dans un autre site, et bie
Problème affichage BD multiples [ par ekipage2 ]
Bonjour,j'ai plusieurs BD : eleve / matières / et exercicesLorque l'élèv se connecte, il peut afficher la liste des exercices correspondants à sa clas
Formulaire avec select et update de bdd mysql [ par arnold002 ]
Bonjour à tous,J'ai un formulaire qui contient 2 champs de type select : classe et annee.Je veux associer chaque classe à chaque année
|
Téléchargements
Logiciels à télécharger sur le même thème :
|