Class simple cbasedonnee

Soyez le premier à donner votre avis sur cette source.

Vue 3 180 fois - Téléchargée 284 fois

Description

Class simple pour ce connecter une base de donnée MySQL.
Il suffit de créer un objet de class CBaseDonnee() pour pourvoir executer une requete SQL. Le nombre de ligne est enregistrer dans un attribu, ansi que le link de connexion, le dernier ID SQL enregistrer, etc...

Source / Exemple :


<?php

class CBaseDonnee {

    private $server;    //Adresse de la BD
    private $user;      //Utilisateur pour la connexion à la BD
    private $password;  //Mot de passe de la connexion à la BD
    private $basename;  //Nom de la BD
    private $link;      //Identifiant de connexion MySQL
    private $nbr_rows;  //Nombre de ligne de la requete execute
    private $erreur;    //Valeur de retour des methodes
    private $requete;   //Requete SQL
    private $result;    //Ressource de la requete
    private $type;      //Type de requete (SELECT, ...)

    /* Constructeur par defaut

  • parametre entree : - $serveur = Adresse de la BD
  • - $username = Utilisateur pour la connexion à la BD
  • - $password = Mot de passe de la connexion à la BD
  • - $database = Nom de la BD
  • parametre sortie : - $this->erreur = TRUE en cas de succes, sinon retourne l'erreur générée lors connection
  • Traitement :
  • /
function __construct($serveur = "", $username="", $password="", $database="") { //Initialise les attributs $this->Init(); $this->server = strval($serveur); $this->user = strval($username); $this->password = strval($password); $this->basename = strval($database); //Test de connection à la BD $this->ConnectBD(); return $this->erreur; } function Init() { //Initialise les attributs $this->server = NULL; $this->user = NULL; $this->password = NULL; $this->basename = NULL; $this->link = NULL; $this->nbr_rows = NULL; $this->erreur = NULL; $this->result = NULL; $this->requete = NULL; } /* Destructeur par defaut
  • parametre entree : void
  • parametre sortie : void
  • Traitement : Ferme la connexion
  • /
function __destruct() { mysql_close($this->link); } /* ConnectBD
  • parametre entree : void
  • parametre sortie : - $this->erreur = TRUE en cas de succes, sinon retourne l'erreur générée lors connection
  • Traitement : - Test de connexion à la base de donnée
  • /
private function ConnectBD() { $this->link = mysql_connect($this->server, $this->user, $this->password); $db_selected = mysql_select_db($this->basename, $this->link); if (!$db_selected) { $this->erreur = mysql_error(); } else { $this->erreur = TRUE; } return $this->erreur; } /* ProtectionChaineSQL
  • parametre entree : $chaine : Chaine de caractere utilisé pour les requetes SQL
  • parametre sortie : Chaine protègée par les caractères spéciaux et convertit les caractères spéciaux en entités HTML
  • Traitement :
  • /
public function ProtectionChaineSQL($chaine) { return strval(mysql_real_escape_string(htmlspecialchars($chaine), $this->link)); } /* ExecuteRequete
  • parametre entree : Requete SQL
  • parametre sortie : $this->erreur = TRUE en cas de succes, sinon retourne l'erreur générée lors connection
  • Traitement : Protege la requete SQL
  • Extrait le type de requete (SELECT, UPDATE,INSET, ...)
  • Execute la requete
  • Si le type est SELECT, enregistrer le nombre de ligne du resultat
  • Retourne les erreurs
  • /
public function ExecuteRequete($sql) { $this->requete = $this->ProtectionChaineSQL($sql); $this->type = strtoupper(substr($this->requete, 0, 6)); $this->result = mysql_query($this->requete); if (!$this->result) { $this->nbr_rows = 0; $this->erreur = mysql_error(); } else { switch ($this->type) { case 'SELECT': $this->nbr_rows = mysql_num_rows($this->result); break; default: $this->nbr_rows = 0; break; } $this->erreur = TRUE; } return $this->erreur; } /* ViderTable
  • parametre entree : Chaine contenant le nom de la base à vider
  • parametre sortie : $this->erreur = TRUE en cas de succes, sinon retourne l'erreur générée lors connection
  • Traitement : Creation de la requete SQL pour vider la table avec le nom proteger
  • Execute la requete
  • Retourne les erreurs
  • /
public function ViderTable($nom) { $sql = 'TRUNCATE ' . $this->ProtectionChaineSQL($nom); $this->erreur = mysql_query($sql, $this->link); $this->type = NULL; return $this->erreur; } /* GetNbrRows
  • parametre entree : void
  • parametre sortie : Entier d'enregistrement de la derniere requete SQL
  • Traitement : Retourne un entier de l'attribu nbr_rows
  • /
public function GetNbrRows() { return intval($this->nbr_rows); } /* GetErreur
  • parametre entree : void
  • parametre sortie : Retourne l'attribu erreur
  • Traitement :
  • /
public function GetErreur() { return $this->erreur; } /* GetLink
  • parametre entree : void
  • parametre sortie : Retourne l'attribu link
  • Traitement :
  • /
public function GetLink() { return $this->link; } /* DernierID
  • parametre entree : void
  • parametre sortie : Retourne un entier du dernier ID inserer dans la BD
  • Traitement :
  • /
public function DernierID() { return mysql_insert_id($this->link); } /* AfficheResultat
  • parametre entree : Chaine contenant le nom de l'Id Css et et la class Css
  • parametre sortie : Afffiche le tableau representant le resultat de la derniere requete SQL
  • Traitement : Affiche un tableau
  • Tant qu'il y a un champs
  • Affiche les titres de colonnes en majuscule
  • Tant qu'il y a une ligne d'enregistrement
  • Affiche un ligne avec le contenu de chaque champs de l'enregistrment
  • /
public function AfficheResultat($idstyle="", $classstyle="") { if ($this->type == "SELECT") { echo'<table id="' . $idstyle . '" class="' . $classstyle . '">'; $i = 0; while ($i < mysql_num_fields($this->result)) { $meta = mysql_fetch_field($this->result, $i); echo '<th>' . ucwords($meta->name) . '</th>'; $i++; } while ($tab = mysql_fetch_row($this->result)) { echo '<tr>'; for ($i = 0; $i < mysql_num_fields($this->result); $i++) { echo '<td>' . $tab[$i] . '</td>'; } echo '</tr>'; } echo'</table>'; } } } ?>

Codes Sources

A voir également

Ajouter un commentaire

Commentaire

Morphinof
Messages postés
261
Date d'inscription
vendredi 20 avril 2007
Statut
Membre
Dernière intervention
9 août 2013
3 -
C'est pas mal, le code est propre et commente mais :
Tu n'utilises pas PDO, c'est dommage.
Ta classe n'est pas un singleton qui est un design pattern particulierement utilise pour ce qui est des abstractions de base de donnees, tu devrais jeter un oeil ici : http://php.net/manual/en/language.oop5.patterns.php

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.