|
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 PHP4 DE CONNEXION À UN SGBD
Information sur la source
Description
Cette classe relativement simple n'est pas non plus très original étant donné qu'il en existe de nombreuses sur le sujet. Elle permet la connexion et l'exécution de requête sur n'importe quel SGBD en réécrivant la classe fille adaptée et en ajoutant une instruction à la fonction connexion(). Je n'est pour l'instant qu'écrit une sous classe pour MySQL. Elle est écris pour PHP4. Les erreurs peuvent soit être traitées avec une gestion personnalisée, soit au cas par cas. J'aimerais savoir ce que vous en pensez
Source
- <?php
- // Classe abstraite définissant une interface générique d'accès à une base de données
-
- class BASE
- {
- // propriétés protégée
- var $connexion;
- var $messExplicatif;
- var $codeErreur;
- var $messErreur;
- var $SGBD;
-
- // Constructeur de la classe
- function BASE($login, $motDePasse, $base, $serveur)
- {
- // Initialisations
- $this -> messExplicatif = "";
- $this -> codeErreur = 0;
- $this -> messErreur = "";
- $this -> sgbd = "Indefini";
-
- // Connexion au serveur par appel à une méthode privée
- if (!$this -> connexion = $this->connect($login, $motDePasse, $base, $serveur))
- {
- $this -> messExplicatif = "Erreur de connexion au SGBD " . $this->sgbd . ": <BR> " . $this->messageSGBD();
- }
- }
- // Fin du constructeur
-
-
- // Méthodes privées
- // Méthodes abstraites
- function connect($login, $motDePasse, $base, $serveur) {}
- function exe ($requete) {}
- // Méthode de mise en forme du message d'erreur du SGBD
- function messageSGBD ()
- {
- return "Libelle erreur : ".$this->messErreur."<BR />Num erreur :".$this->codeErreur;
- }
-
-
- // Méthodes publiques
- // Méthode d'exécution d'une requête
- function exeRequete ($requete)
- {
- if (!$resultat = $this -> exe ($requete))
- {
- $this -> messExplicatif = "Problème dans l'exécution de la requête : " . $requete . "<BR> " . $this->messageSGBD();
- }
- else
- {
- return $resultat;
- }
- }
- // Retour du message d'erreur
- function messageExplicatif ()
- {
- return $this->messExplicatif;
- }
-
- // Méthodes abstraites
- // Accès à la ligne suivante, sous forme d'objet
- function objetSuivant ($resultat) {}
- // Accès à la ligne suivante, sous forme de tableau associatif
- function ligneSuivante ($resultat) {}
- // Accès à la ligne suivante, sous forme de tableau indicé
- function tableauSuivant ($resultat) {}
- // Renvoie nombre de ligne de la requête
- function nbLigne($resultat){}
- // Echappement des apostrophes et autres préparations à l'insertion
- function prepareChaine($chaine) {}
-
- // Acesseur pour les propirétés propore à chaque SGBD
- // Nom du SGBD
- function getSGBD()
- {
- return $this->sgbd;
- }
- function setSGBD($sgbd)
- {
- $this->sgbd = $sgbd;
- }
- // Code erreur du SGBD
- function getCodeErreur()
- {
- return $this->codeErreur;
- }
- function setCodeErreur($codeErreur)
- {
- $this->codeErreur = $codeErreur;
- }
- // Message d'erreur du SGBD
- function getMessErreur()
- {
- return $this->messErreur;
- }
- function setMessErreur($messErreur)
- {
- $this->messErreur = $messErreur;
- }
- // Fin de la classe
- }
- ?>
-
-
- <?php
- // Sous-classe de la classe abstraite BASE, pour l'accès à MySQL
-
- require_once("base.class.php");
-
- class BASE_MYSQL extends BASE
- {
- // Pas de propriétés ou de constructeur: ils sont héritées de la classe BASE
-
-
- // Partie privée: surcharge des méthodes
- // Méthode connect: connexion à MySQL
- function connect($login, $mdp, $base, $serveur)
- {
- // Connexion au serveur MySQL
- if (!$this -> connexion = @mysql_pconnect($serveur, $login, $mdp) or !@mysql_select_db($base, $this->connexion))
- {
- $this -> sgbd = "MySQL";
- $this -> defErreur();
- return false;
- }
- else
- {
- return $this -> connexion;
- }
- }
-
- // Méthode d'exécution d'une requête.
- function exe ($requete)
- {
- if (!$resultat = @mysql_query ($requete, $this -> connexion))
- {
- $this -> defErreur();
- return false;
- }
- else
- {
- return $resultat;
- }
- }
-
- // Méthode defErreur: détermine les codes d'erreurs propres à MySQL
- function defErreur()
- {
- $this -> messErreur = mysql_error();
- $this -> codeErreur = mysql_errno();
- }
-
-
- // Partie publique: surcharge des méthodes abstraites
- // Accès à la ligne suivante, sous forme d'objet
- function objetSuivant($resultat)
- { return mysql_fetch_object($resultat); }
- // Accès à la ligne suivante, sous forme de tableau associatif
- function ligneSuivante($resultat)
- { return mysql_fetch_assoc($resultat); }
- // Accès à la ligne suivante, sous forme de tableau indicé
- function tableauSuivant($resultat)
- { return mysql_fetch_row($resultat); }
- // Renvoie nombre de ligne de la requête
- function nbLigne($resultat)
- { return mysql_num_rows($resultat); }
- // Echappement des apostrophes pour préparation à l'insertion ou à consultation
- function prepareChaine($chaine)
- { return mysql_real_escape_string($chaine); }
-
-
- // Destructeur de la classe: on se déconnecte
- function __destruct ()
- {
- if (!$this -> connexion = @mysql_close ($this->connexion))
- return false;
- }
- // Fin de la classe
- }
- ?>
-
-
- // Fonctions pour connexion à la base en fonction du SGBD
- // arguments par valeur : $login, $passe, $base, $serveur -> paramètre de connexion à la base
- // arguments par adresse : aucun
- // retourne : $bd -> objet intance de la sous-classe utilisée
- function connexion ($login, $mdp, $base, $serveur)
- {
- define ("SGBD", "MySQL"); // A definir en fonction du SGBD utilisé
-
- // Instanciation d'un objet instance de BASE.
- // Choix de la sous-classe en fonction du SGBD
- switch (SGBD)
- {
- case "PostgreSQL":
- $bd = new BASE_POSTGRESQL ($login, $mdp, $base, $serveur); // Exemple à definir
- break;
-
- case "SQLite":
- $bd = new BASE_SQLITE ($login, $mdp, $base, $serveur); // Exemple à definir
- break;
-
- default: // MySQL par défaut
- $bd = new BASE_MYSQL ($login, $mdp, $base, $serveur);
- break;
- }
- return $bd;
- }
<?php
// Classe abstraite définissant une interface générique d'accès à une base de données
class BASE
{
// propriétés protégée
var $connexion;
var $messExplicatif;
var $codeErreur;
var $messErreur;
var $SGBD;
// Constructeur de la classe
function BASE($login, $motDePasse, $base, $serveur)
{
// Initialisations
$this -> messExplicatif = "";
$this -> codeErreur = 0;
$this -> messErreur = "";
$this -> sgbd = "Indefini";
// Connexion au serveur par appel à une méthode privée
if (!$this -> connexion = $this->connect($login, $motDePasse, $base, $serveur))
{
$this -> messExplicatif = "Erreur de connexion au SGBD " . $this->sgbd . ": <BR> " . $this->messageSGBD();
}
}
// Fin du constructeur
// Méthodes privées
// Méthodes abstraites
function connect($login, $motDePasse, $base, $serveur) {}
function exe ($requete) {}
// Méthode de mise en forme du message d'erreur du SGBD
function messageSGBD ()
{
return "Libelle erreur : ".$this->messErreur."<BR />Num erreur :".$this->codeErreur;
}
// Méthodes publiques
// Méthode d'exécution d'une requête
function exeRequete ($requete)
{
if (!$resultat = $this -> exe ($requete))
{
$this -> messExplicatif = "Problème dans l'exécution de la requête : " . $requete . "<BR> " . $this->messageSGBD();
}
else
{
return $resultat;
}
}
// Retour du message d'erreur
function messageExplicatif ()
{
return $this->messExplicatif;
}
// Méthodes abstraites
// Accès à la ligne suivante, sous forme d'objet
function objetSuivant ($resultat) {}
// Accès à la ligne suivante, sous forme de tableau associatif
function ligneSuivante ($resultat) {}
// Accès à la ligne suivante, sous forme de tableau indicé
function tableauSuivant ($resultat) {}
// Renvoie nombre de ligne de la requête
function nbLigne($resultat){}
// Echappement des apostrophes et autres préparations à l'insertion
function prepareChaine($chaine) {}
// Acesseur pour les propirétés propore à chaque SGBD
// Nom du SGBD
function getSGBD()
{
return $this->sgbd;
}
function setSGBD($sgbd)
{
$this->sgbd = $sgbd;
}
// Code erreur du SGBD
function getCodeErreur()
{
return $this->codeErreur;
}
function setCodeErreur($codeErreur)
{
$this->codeErreur = $codeErreur;
}
// Message d'erreur du SGBD
function getMessErreur()
{
return $this->messErreur;
}
function setMessErreur($messErreur)
{
$this->messErreur = $messErreur;
}
// Fin de la classe
}
?>
<?php
// Sous-classe de la classe abstraite BASE, pour l'accès à MySQL
require_once("base.class.php");
class BASE_MYSQL extends BASE
{
// Pas de propriétés ou de constructeur: ils sont héritées de la classe BASE
// Partie privée: surcharge des méthodes
// Méthode connect: connexion à MySQL
function connect($login, $mdp, $base, $serveur)
{
// Connexion au serveur MySQL
if (!$this -> connexion = @mysql_pconnect($serveur, $login, $mdp) or !@mysql_select_db($base, $this->connexion))
{
$this -> sgbd = "MySQL";
$this -> defErreur();
return false;
}
else
{
return $this -> connexion;
}
}
// Méthode d'exécution d'une requête.
function exe ($requete)
{
if (!$resultat = @mysql_query ($requete, $this -> connexion))
{
$this -> defErreur();
return false;
}
else
{
return $resultat;
}
}
// Méthode defErreur: détermine les codes d'erreurs propres à MySQL
function defErreur()
{
$this -> messErreur = mysql_error();
$this -> codeErreur = mysql_errno();
}
// Partie publique: surcharge des méthodes abstraites
// Accès à la ligne suivante, sous forme d'objet
function objetSuivant($resultat)
{ return mysql_fetch_object($resultat); }
// Accès à la ligne suivante, sous forme de tableau associatif
function ligneSuivante($resultat)
{ return mysql_fetch_assoc($resultat); }
// Accès à la ligne suivante, sous forme de tableau indicé
function tableauSuivant($resultat)
{ return mysql_fetch_row($resultat); }
// Renvoie nombre de ligne de la requête
function nbLigne($resultat)
{ return mysql_num_rows($resultat); }
// Echappement des apostrophes pour préparation à l'insertion ou à consultation
function prepareChaine($chaine)
{ return mysql_real_escape_string($chaine); }
// Destructeur de la classe: on se déconnecte
function __destruct ()
{
if (!$this -> connexion = @mysql_close ($this->connexion))
return false;
}
// Fin de la classe
}
?>
// Fonctions pour connexion à la base en fonction du SGBD
// arguments par valeur : $login, $passe, $base, $serveur -> paramètre de connexion à la base
// arguments par adresse : aucun
// retourne : $bd -> objet intance de la sous-classe utilisée
function connexion ($login, $mdp, $base, $serveur)
{
define ("SGBD", "MySQL"); // A definir en fonction du SGBD utilisé
// Instanciation d'un objet instance de BASE.
// Choix de la sous-classe en fonction du SGBD
switch (SGBD)
{
case "PostgreSQL":
$bd = new BASE_POSTGRESQL ($login, $mdp, $base, $serveur); // Exemple à definir
break;
case "SQLite":
$bd = new BASE_SQLITE ($login, $mdp, $base, $serveur); // Exemple à definir
break;
default: // MySQL par défaut
$bd = new BASE_MYSQL ($login, $mdp, $base, $serveur);
break;
}
return $bd;
}
Conclusion
Voici un exemple simple d'utilisation $base = connexion (NOM, MDP, BASE, SERVEUR); $resultat = $base -> exeRequete ("SELECT * FROM Produit"); while ($obj = $base -> objetSuivant($resultat)) echo $obj -> nomPdt."<BR />";
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
php 3 et php4 [ par php ]
C'est quoi la difference de php 3 et de php 4 ?
redirection [ par ouiouiteur ]
comment rediriger une page vers :-soit une page sur mon serveur chez moi, si ma connexion est active-soit vers une page sur un hebergeur gratuit pour
Connexion ki ve pas ?!? [ par FF.ST Hébergement ]
Je tente de me connecter à un serveur counter-strike ...Pas de pot, ça marche pas !Pourtant la connexion de counter strike est une cnx normale TCP sur
Comment faire ? Connexion TCP ki ve pas [ par FF.ST Hébergement ]
Je tente de me connecter à l'aide de fsockopen sur un serveur counter-strike (half life).La connexion ne marche pas :(Pk ?$cnx = fsockopen("24.120.30.
cherche hebergeur PHP4 et MySQL [ par Fafouneou ]
Je recherche un hebergeur gratuit ou payant ( dans la limite de 50 frs par mois) avec 100 Mo et qui gere le PHP4 et MySQL merci d'avance ...Tout les g
Hébergeur ASP/PHP4 [ par xav ]
J'ai trouvé un hébergeur qui fait de l'asp/php4, c'est webcentrale.com. Leurs prix sont tout à fait raisonnables et je suis vraiment très content de l
Nom de variable... [ par RockmanX ]
Voilà,j'ai un fichier que je vais appeler form.php4 qui contient 1 input : <INPUT TYPE='text' NAME='quantite".$idarticle."' VALUE='".$nbrarticle."'
Connexion à une base de données Paradox ! [ par orelien ]
Bonjour !Voilà, j'aimerai me connecter à une base de données Paradox mais je n'y arrive pas !...Quelqu'un peut il m'aider ??Merci beaucoup.Orelien.
connexion avec sql server [ par mabrouk ]
bonjour, svp je travaille sur un poste client windows2000 server dans un domaine j'ai installé easyphp(php+apache+mysql), j'ai voulu se connecter a no
Connexion telnet [ par Ark1 ]
Bijour all,J'aimerais savoir si il est possible de se connecter a un serveur telnet, si oui pourrait on me donner une pitite liste des fonction a util
|
Téléchargements
Logiciels à télécharger sur le même thème :
Comparez les prix Nouvelle version
|