|
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
Classe Connexion.php la plus simple possible .... [ par Tartuffe245 ]
Bonjour à tous,J'ai créé une classe connexion pour mon site internet et il se trouve que j'ai une erreur qui revient souvent mais je ne sais pas comme
PB de connexion à mysql depuis serveur apache sur mac [ par inaden ]
Bonjour,voilà je suis sur mac os x 10.5.6. Le serveur apache fonctionne bien et j'ai, depuis peu, essayé d'installer mySQL sur la machine. Jusque là t
php:aider moi(valider pseudo et mot de passe avec formulaire) [ par info3licen ]
Bonjour,je travaille avec phpj'ai besoin d'aide,je n'arrive pas a trouvé la solution: j'ai fai un formulaire avec pseudo et mot de passe les utilisate
Garder la connexion Mysql ouverte [ par farouk86 ]
Bonjour a tous!J'ai une page login.PHP qui permet de s'authentifier et de se connecter a une base de donnée.J'ai une autre page ajouter.PHP qui permet
a tous les pro du php [ par vrkill2 ]
bonjour a tous qui peux mexpliqué clairement comment utiliser se code svp merci <?php // Démarage de la session PHP4// Il faut tou
Connexion à mysql persitente [ par slurp ]
Quelqu'un peut-il m'explique à quoi sert un connexion persistante !Merci d'avance
problème concaténation [ par morpheus22170 ]
Bonjour,comme le titre l'indique j'ai un problème de concaténation. Je suis sur une base de données de type "bibliothèque"Mon problème vient de l'inse
Classe de gestion ftp: problème de passage de valeur? [ par spoutch ]
Bonjour tout le monde ou tout du moins a ceux qui daignerons lire mon poste ^^Je travail en local sur le serveur Apache de wamp. A partir d'une source
Connexion mysql [ par Leeloe6 ]
Bonjour,Mon problème est que je n'arrive pas à me connecter à ma base de donnée sous linux. J'ai créé mes pages et ma bdd sous windows dans un premier
projet php/mysql [ par simonano ]
bonjour,je remercie bcp monsieur Bul3 d'avoir me repondre a chaque fois.enfin j'ai confiance a un endroit pour poster mon problème qui casse ma tête
|
Téléchargements
Logiciels à télécharger sur le même thème :
Comparez les prix Nouvelle version
|