Sondage du mois

Sondage du mois
 

  La connaissance ne vaut que si elle est partagée par tous




 
  Astuce Adobe Photoshop : Raccourci tout sélectionner : Ctrl A




Infos de Percoman

Voir sa Fiche Membre

  • Blog conçu le : 07 Avril 2008
  • Nombre d'articles : 6
  • Nombre de pages vues : 9727
  • Adresse Email :

Les articles du blog

Blog de Percoman
Blog de Percoman - [PHP] Classe DataBase
le 10/06/2010 à 11h48 - 7 commentaires   

[PHP] Classe DataBase

3.5/5 (2 votes)

Je reviens avec une évolution de ma classe de connexion à une base de données, cette fois-ci elle a plusieurs classes héritée pour différentes type de connexion (MySQL, PostGreSQL, SQLite, SQLite3, Oracle et ODBC).
J'en ai testée aucune donc si vous avez des erreurs n'hésitez pas !

database.class.php
Clique ici pour afficher le message caché
CODE PHP


<?php
/*
* DataBase - Classe PHP pour la connexion à une base de données
* NOTE: PHP 5.0.0 ou supérieur requis
* @auteur Manuel Santisteban
* @Copyright 2010 Manuel Santisteban
*/

if (version_compare(PHP_VERSION, '5.0.0', '<') ) exit("Désolé, mais la connexion à la base de données se fait en PHP 5.0.0 minimum !n");

/*
* Classe héritant de Exception pour les exception de Connexion
*/
class ConnectionException extends Exception {
/*
* Récupération du message d'error de l'exception
* @var string
*/
public function errorMessage() {
return '<p>'.parent::getMessage().'</p>';
}
}

/*
* Classe héritant de Exception pour les exception de commande SQL
*/
class DataBaseException extends Exception {
/*
* Récupération du message d'error de l'exception
* @var string
*/
public function errorMessage() {
return '<p>'.parent::getMessage().'</p>';
}
}

abstract class DataBase {
/*
* Adresse du serveur de base de données
* @var string
*/
protected $host;

/*
* Nom d'utilisateur
* @var string
*/
protected $user;

/*
* Mot de passe de l'utilisateur
* @var string
*/
protected $password;

/*
* Nom de la base de données
* @var string
*/
protected $basename;

/*
* Lien de la base de données
* @var resource
*/
protected $link;

/*
* Nombre de requêtes exécutées
* @var int
*/
protected $nbRequete;

/*
* Charset pour la connexion à la BD
* @var string
*/
protected $charset;

/*
* Construteur de classe et création de la connexion à la BD
* @return void
*/
public function __construct($host, $user, $password, $base, $charset='latin1') {
$this->host = $host;
$this->user = $user;
$this->password = $password;
$this->basename = $base;
$this->charset = $charset;

$this->link = $this->connect();

if($this->link == null) {
throw new ConnectionException('Impossible de se connecter au serveur '.$this->host.'', 1);
}
}

/*
* Fermeture de la connexion à la destruction de l'objet
* @return void
*/
public function __destruct() {
$this->close($this->link);
}

/*
* Fermeture de la connexion à la destruction de l'objet
* @return void
*/
public function sendSQL($req, $type='select', $table='', $where='') {
switch($type) {
case 'select' :
$res = $this->query($req);
break;
case 'insert' :
$res = $this->insert($req, $table);
break;
case 'update' :
$res = $this->update($req, $table, $where);
break;
}

if ($res == null) {
throw new DataBaseException('Erreur dans la requête :<br /><pre style="border:1px solid grey;padding:5px;">'.$req.'</pre>', 1);
}

$this->nbRequete++;
return $res;
}

/*
* Retourne le nombre de résultats
* @return int
*/
public function getNbRequete() {
return $this->nbRequete;
}

/*
* Retourne le nom de tous les champs de la requête
* @return Array
*/
public function getFieldNames($query) {
return $this->fieldNames($query);
}

/*
* Lit une ligne de la requête
* @return Array
*/
public function fetch($query) {
return $this->next($query);
}

/*
* Lit toutes les lignes de la requête
* @return Array<Array>
*/
protected function fetch_all($resultSet) {
$fetchAll = array();

while($data = $this->fetch($resultSet)) {
array_push($fetchAll, $data);
}

return $fetchAll;
}

/*
* Ouverture connexion à la base de données
* @return resource
*/
protected abstract function connect();

/*
* Fermeture connexion à la base de données
* @return void
*/
protected abstract function close();

/*
* Execution d'une requete
* @return resource
*/
protected abstract function query($req);

/*
* Execution d'une requete INSERT INTO
* @return resource
*/
protected abstract function insert($array, $table);

/*
* Execution d'une requete UPDATE
* @return resource
*/
protected abstract function update($array, $table, $where='');

/*
* Liste de tous les champs d'une table
* @return Array<string>
*/
protected abstract function fieldNames($resultSet);

/*
* Connexion à la base de données
* @return Array
*/
protected abstract function next($resultSet);

/*
* Connexion à la base de données
* @return Array<Array>
*/
protected abstract function fetch_all($resultSet);
}
?>



database.mysql.class.php
Clique ici pour afficher le message caché
CODE PHP


<?php
/*
* DataBase - Classe PHP pour la connexion à une base de données
* MODULE: Module de connexion à MySQL
* NOTE: PHP 5.0.0 ou supérieur requis
* @auteur Manuel Santisteban
* @Copyright 2010 Manuel Santisteban
*/

require_once(dirname(__FILE__).DIRECTORY_SEPARATOR.'database.class.php');

class DataBaseMySQL extends DataBase {
/*
* Ouverture connexion à la base de données
* @return resource
*/
protected function connect() {
$link = @mysql_connect($this->host, $this->user, $this->password);

if(!$link) {
return null;
}

if(!@mysql_select_db($this->basename, $link)) {
return null;
}

if(function_exists('mysql_set_charset')) {
if(!@mysql_set_charset($this->charset, $link)) {
return null;
}
}
else {
if(!@mysql_query('SET CHARACTER SET "'.$this->charset.'"', $link)) {
return null;
}
}
return $link;
}

/*
* Fermeture connexion à la base de données
* @return void
*/
protected function close() {
@mysql_close($this->link);
}

/*
* Execution d'une requete
* @return resource
*/
protected function query($req) {
if(!($res = @mysql_query($req))) {
return null;
}
return $res;
}

/*
* Execution d'une requete INSERT INTO
* @return resource
*/
protected function insert($array, $table) {
$req = 'INSERT INTO '.$table.' ('.implode(', ', array_keys($array)).') VALUES("'.implode('", "', array_values($array)).'")';
return $this->query($req);
}

/*
* Execution d'une requete UPDATE
* @return resource
*/
protected function update($array, $table, $where='') {
$i = 1;
$req = 'UPDATE '.$table.' SET ';

foreach($array As $field => $value) {
$req .= $field.' = "'.$value.'"';
if($i < count($array))
$req .= ', ';
else
$req .= ' ';
$i++;
}

$req .= $where;

return $this->query($req);
}

/*
* Liste de tous les champs d'une table
* @return Array<String>
*/
protected function fieldNames($resultSet) {
$nb = mysql_num_fields($resultSet);
$t = array();
for ($i = 0; $i < $nb; $i++) {
array_push($t, mysql_field_name($resultSet, $i));
}
return $t;
}

/*
* Lit une ligne de l'éxécution de la requete
* @return Array
*/
protected function next($resultSet) {
return mysql_fetch_array($resultSet, MYSQL_ASSOC);
}
}
?>



database.postgresql.class.php
Clique ici pour afficher le message caché
CODE PHP


<?php
/*
* DataBase - Classe PHP pour la connexion à une base de données
* MODULE: Module de connexion à PostGreSQL
* NOTE: PHP 5.0.0 ou supérieur requis
* @auteur Manuel Santisteban
* @Copyright 2010 Manuel Santisteban
*/

require_once(dirname(__FILE__).DIRECTORY_SEPARATOR.'database.class.php');

class DataBasePostGreSQL extends DataBase {
/*
* Ouverture connexion à la base de données
* @return resource
*/
protected function connect() {
$lien = @pg_connect('host='.$this->host.' dbname='.$this->basename.' user='.$this->user.' password='.$this->password.'', PGSQL_CONNECT_FORCE_NEW);

if(!$link)
return null;
if(@pg_set_client_encoding($this->charset) == -1)
return null;
return $link;
}

/*
* Fermeture connexion à la base de données
* @return void
*/
protected function close() {
@pg_close($this->link);
}

/*
* Execution d'une requete
* @return resource
*/
protected function query($req) {
if(!($res = @pg_query($this->link, $req)))
return null;
return $res;
}

/*
* Execution d'une requete INSERT INTO
* @return resource
*/
protected function insert($array, $table) {
$req = 'INSERT INTO '.$table.' ('.implode(', ', array_keys($array)).') VALUES("'.implode('", "', array_values($array)).'")';
return $this->query($req);
}

/*
* Execution d'une requete UPDATE
* @return resource
*/
protected function update($array, $table, $where='') {
$i = 1;
$req = 'UPDATE '.$table.' SET ';

foreach($array As $field => $value) {
$req .= $field.' = "'.$value.'"';
if($i < count($array))
$req .= ', ';
else
$req .= ' ';
$i++;
}

$req .= $where;

return $this->query($req);
}

/*
* Liste de tous les champs d'une table
* @return Array<String>
*/
protected function fieldNames($resultSet) {
$nb = pg_num_fields($resultSet);
$t = array();
for ($i = 0; $i < $nb; $i++)
array_push($t, pg_field_name($resultSet, $i));
return $t;
}

/*
* Lit une ligne de l'éxécution de la requete
* @return Array
*/
protected function next($resultSet) {
return pg_fetch_array($resultSet, NULL, PGSQL_ASSOC);
}
}
?>



database.sqlite3.class.php
Clique ici pour afficher le message caché
CODE PHP


<?php
/*
* DataBase - Classe PHP pour la connexion à une base de données
* MODULE: Module de connexion à SQLite3
* NOTE: PHP 5.0.0 ou supérieur requis
* @auteur Manuel Santisteban
* @Copyright 2010 Manuel Santisteban
*/

require_once(dirname(__FILE__).DIRECTORY_SEPARATOR.'database.class.php');

class DataBaseSQLite3 extends DataBase {
/*
* Ouverture connexion à la base de données
* @return resource
*/
protected function connect() {
$link = new SQLite3($this->host);

if(!$link) {
return null;
}

return $link;
}

/*
* Fermeture connexion à la base de données
* @return void
*/
protected function close() {
@$this->link->close();
}

/*
* Execution d'une requete
* @return SQLite3Result
*/
protected function query($req) {
if(!($res = @$this->link->query($req))) {
return null;
}
return $res;
}

/*
* Execution d'une requete INSERT INTO
* @return SQLite3Result
*/
protected function insert($array, $table) {
$req = 'INSERT INTO '.$table.' ('.implode(', ', array_keys($array)).') VALUES("'.implode('", "', array_values($array)).'")';
return $this->query($req);
}

/*
* Execution d'une requete UPDATE
* @return SQLite3Result
*/
protected function update($array, $table, $where='') {
$i = 1;
$req = 'UPDATE '.$table.' SET ';

foreach($array As $field => $value) {
$req .= $field.' = "'.$value.'"';
if($i < count($array))
$req .= ', ';
else
$req .= ' ';
$i++;
}

$req .= $where;

return $this->query($req);
}

/*
* Liste de tous les champs d'une table
* @return Array<String>
*/
protected function fieldNames($resultSet) {
$nb = $resultSet->numColumns();
$t = array();
for ($i = 0; $i < $nb; $i++) {
array_push($t, $resultSet->columnName($i));
}
return $t;
}

/*
* Lit une ligne de l'éxécution de la requete
* @return Array
*/
protected function next($resultSet) {
return $resultSet->fetchArray(SQLITE3_ASSOC);
}
}
?>



database.oracle.class.php
Clique ici pour afficher le message caché
CODE PHP


<?php
/*
* DataBase - Classe PHP pour la connexion à une base de données
* MODULE: Module de connexion à Oracle
* NOTE: PHP 5.0.0 ou supérieur requis
* @auteur Manuel Santisteban
* @Copyright 2010 Manuel Santisteban
*/

require_once(dirname(__FILE__).DIRECTORY_SEPARATOR.'database.class.php');

class DataBaseOracle extends DataBase {
/*
* Ouverture connexion à la base de données
* @return resource
*/
protected function connect() {
/*
*
*/
$link = @oci_connect($this->user, $this->password, $this->host.'/'.$this->basename);

if(!$link) {
return null;
}

return $link;
}

/*
* Fermeture connexion à la base de données
* @return void
*/
protected function close() {
@oci_close($this->link);
}

/*
* Execution d'une requete
* @return resource
*/
protected function query($req) {
$stid = oci_parse($this->link, $req);
if(!$stid) {
return null;
}

if(oci_execute($stid)) {
return $res;
}
else {
return null;
}
}

/*
* Execution d'une requete INSERT INTO
* @return resource
*/
protected function insert($array, $table) {
$req = 'INSERT INTO '.$table.' ('.implode(', ', array_keys($array)).') VALUES("'.implode('", "', array_values($array)).'")';
return $this->query($req);
}

/*
* Execution d'une requete UPDATE
* @return resource
*/
protected function update($array, $table, $where='') {
$i = 1;
$req = 'UPDATE '.$table.' SET ';

foreach($array As $field => $value) {
$req .= $field.' = "'.$value.'"';
if($i < count($array))
$req .= ', ';
else
$req .= ' ';
$i++;
}

$req .= $where;

return $this->query($req);
}

/*
* Liste de tous les champs d'une table
* @return Array<String>
*/
protected function fieldNames($resultSet) {
$nb = oci_num_fields($resultSet);
$t = array();
for ($i = 0; $i < $nb; $i++) {
array_push($t, oci_field_name($resultSet, $i));
}
return $t;
}

/*
* Lit une ligne de l'éxécution de la requete
* @return Array
*/
protected function next($resultSet) {
return oci_fetch_array($resultSet, OCI_BOTH);
}
}
?>



database.odbc.class.php
Clique ici pour afficher le message caché
CODE PHP


<?php
/*
* DataBase - Classe PHP pour la connexion à une base de données
* MODULE: Module de connexion à ODBC
* NOTE: PHP 5.0.0 ou supérieur requis
* @auteur Manuel Santisteban
* @Copyright 2010 Manuel Santisteban
*/

require_once(dirname(__FILE__).DIRECTORY_SEPARATOR.'database.class.php');

class DataBaseODBC extends DataBase {
/*
* Ouverture connexion à la base de données
* @return resource
*/
protected function connect() {
$link = @odbc_connect($this->host.';Database='.$this->basename.';', $this->user, $this->password);

if(!$link) {
return null;
}

return $link;
}

/*
* Fermeture connexion à la base de données
* @return void
*/
protected function close() {
@odbc_close($this->link);
}

/*
* Execution d'une requete
* @return resource
*/
protected function query($req) {
$stmt = odbc_exec($this->link, $req);

if(!$stmt) {
return null;
}

return $stmt;
}

/*
* Execution d'une requete INSERT INTO
* @return resource
*/
protected function insert($array, $table) {
$req = 'INSERT INTO '.$table.' ('.implode(', ', array_keys($array)).') VALUES("'.implode('", "', array_values($array)).'")';
return $this->query($req);
}

/*
* Execution d'une requete UPDATE
* @return resource
*/
protected function update($array, $table, $where='') {
$i = 1;
$req = 'UPDATE '.$table.' SET ';

foreach($array As $field => $value) {
$req .= $field.' = "'.$value.'"';
if($i < count($array))
$req .= ', ';
else
$req .= ' ';
$i++;
}

$req .= $where;

return $this->query($req);
}

/*
* Liste de tous les champs d'une table
* @return Array<String>
*/
protected function fieldNames($resultSet) {
$nb = odbc_num_fields($resultSet);
$t = array();
for ($i = 0; $i < $nb; $i++) {
array_push($t, odbc_field_name($resultSet, $i));
}
return $t;
}

/*
* Lit une ligne de l'éxécution de la requete
* @return Array
*/
protected function next($resultSet) {
return odbc_fetch_array($resultSet);
}
}
?>




Des améliorations vont surement arriver par la suite ..



Partager sur Twitter

Blog de Percoman - prechargement des images sans javascript
le 07/01/2009 à 20h13 - 6 commentaires   

prechargement des images sans javascript

5/5 (1 votes)

Objectif : ne plus avoir d'espace blanc lors du chargement des images quand on veut effectué un changement d'image sur un hover.

Solution : mettre les images dans le body HTML comme pour les mettre à l'écran mais on va les entourés d'une DIV invisible.

CODE CSS


div#nav_home {
background-image: url('nav_home.jpg');
width: 30px;
height: 17px;
}
div#nav_home:hover {
background-image: url('nav_home_on.jpg');
width: 30px;
height: 17px;
}



CODE HTML


<div style="display:none;">
<img src="nav_home_on.jpg" alt="" />
</div>

<div id="nav_home"></div>





Partager sur Twitter

Blog de Percoman - [VB] Chat : Serveur
le 02/10/2008 à 19h45 - 3 commentaires   

[VB] Chat : Serveur

4/5 (1 votes)





Partager sur Twitter

Blog de Percoman - [VB] Dictionnaire (Tableau)
le 12/04/2008 à 15h13 - 0 commentaire   

[VB] Dictionnaire (Tableau)

4/5 (1 votes)





Partager sur Twitter

Blog de Percoman - [PHP] Arborescence simple
le 11/04/2008 à 18h47 - 3 commentaires   

[PHP] Arborescence simple

4/5 (1 votes)





Partager sur Twitter

Blog de Percoman - Divers scripts (PHP, VB, ...)
le 07/04/2008 à 09h55 - 3 commentaires   

Divers scripts (PHP, VB, ...)

5/5 (1 votes)

Voici mon blog http://blog.xenero-developpement.com/ vous y trouverez des scripts PHP, VB, SQL... Gardez le dans vos favoris sa peut toujours servire :)



Partager sur Twitter

DERNIÈRES PUBLICATIONS DE OPEN-MOUTHED

En direct de open-mouthed.com