Accueil > > > CLASS SQL PLUTÔT COMPLÈTE, AVEC UNE GESTION DES ERREURS PAR FICHIER
CLASS SQL PLUTÔT COMPLÈTE, AVEC UNE GESTION DES ERREURS PAR FICHIER
Information sur la source
Description
Bonjour, alors voilà en fait c'est une class SQL toute bête, rien de bien aprticulier, à part peut-être la gestion des erreurs SQL par l'intermédiaire des fichiers, ce qu ipermet de garder un historique des problèmes SQL.
Source
- <?php
- //Script pour une class php4 avec gestion des erreus par fichier, nombre de requetes
- class Mysql
- {
- var $host = 'localhost'; //Valeur par défault du serveur
- var $user = 'cerfvice'; //Valeur par défault de l'utilisateur
- var $pass = 'eh2eeevu'; //Valeur par défault du mot de passe
- var $db = 'cerfvice_'; //Valeur par défault de la base de donnée
-
- var $aff_errors; //Si true on affiche les erreurs, si false on ne les affiches pas
- var $save_errors; //Si true on enregistre les erreurs, si false on ne les enregistre pas
- var $path_errors = './logs/errors_sql/'; //Contient le chemin relatif du dossier où sont stoqué les fichié d'érreurs SQL
-
- var $error; //On initialise la variable $error qui contiendras les erreurs personnalisées
- var $nbr_query = 0; //On initialise la variable $nbr_query à 0
-
- function Mysql($serveur = false, $client = false, $password = false, $data_abse = false, $list_errors = true, $register_errors = true) //__construct
- {
- //On définis les variables servants à la gestion des erreurs:
- if ($list_errors)
- $this->aff_errors = true;
- else
- $this->aff_errors = false;
- if ($register_errors)
- $this->save_errors = true;
- else
- $this->save_errors = false;
-
- //On vérifie si l'utilisateur demande une configuration précise:
- if ($serveur)
- $this->host = $serveur;
- if ($client)
- $this->user = $client;
- if ($password)
- $this->pass = $password;
- if ($data_abse)
- $this->db = $data_abse;
-
- $this->Connect($this->host, $this->user, $this->pass);
- $this->Select_db($this->db);
- }
-
- function Connect($host, $user, $pass)
- {
- $infos = array($this->host, $this->user, $this->pass); //Array contenant le nom d'accès au serveur, le nom de l'utilisateur et le mot de passe pour la fonction Error qui gère les erreurs
- mysql_connect ($host, $user, $pass) or die($this->Error($infos, 'connect') );
- }
-
- function Select_db($db, $id = false)
- {
- if ($id)
- mysql_select_db ($db, $id) or die($this->Error($db, 'select_db') );
- else
- mysql_select_db ($db) or die($this->Error($db, 'select_db') );
- }
-
- function Close($id = false) //__destruct /-/-/-/-/-/ Destructeur non mis en place, car c'est une class optimisé pour php4
- {
- if ($id)
- mysql_close ($id);
- else
- mysql_close ();
- }
-
- function Query($sql)
- {
- $query = mysql_query($sql) or die($this->Error($sql, 'query') );
-
- ++$this->nbr_query;
-
- return $query;
- }
-
- function Fetch($req, $type = 'assoc')
- {
- switch ($type)
- {
- case 'row':
- $fetch = mysql_fetch_row ($req);
- break;
-
- case 'array':
- $fetch = mysql_fetch_array ($req);
- break;
-
- case 'assoc':
- $fetch = mysql_fetch_assoc ($req);
- break;
-
- case 'object':
- $fetch = mysql_fetch_object ($req);
- break;
- }
- return $fetch;
- }
-
- function Query_array($sql, $type = 'assoc')
- {
- $query = $this->Query ($sql);
- $array = $this->Fetch($query, $type);
-
- return $array;
- }
-
- function Query_array_plus($sql, $type = 'assoc')
- {
- $array = array();
- $query = $this->Query ($sql);
- while ($result = $this->Fetch($query, $type) )
- $array[] = $result;
-
- return $array;
- }
-
- function Error($infos, $type)
- {
- switch ($type)
- {
- case 'connect':
- $this->error = 'Nous ne pouvons pas vous connecter avec ces données:
- <br />
- <span style=\'color: red;\'>Serveur: </span><span style=\'color: blue;\'>'. $infos[0] .'</span>
- </br />
- <span style=\'color: red;\'>Identifiant: </span><span style=\'color: blue;\'>'. $infos[1] .'</span>
- </br />
- <span style=\'color: red;\'>Mot de passe: </span><span style=\'color: blue;\'>'. $infos[2] .'</span>';
- break;
-
- case 'select_db':
- $this->error = 'Nous n\'avons pas pus vous connecter à la base de donnée:
- </br />
- <span style=\'color: red;\'>Base de donnée: </span><span style=\'color: blue;\'>'. $infos .'</span>';
- break;
-
- case 'query':
- $this->error = 'Il y à une erreur dans la requete.
- <br />
- <span style=\'color: red;\'>Requete: </span><span style=\'color: blue;\'>'. $infos .'</span>
- <br />
- <span style=\'color: red;\'>Erreur numéro: </span><span style=\'color: blue;\'>'. mysql_errno() .'</span>
- <br />
- <span style=\'color: red;\'>Erreur MySQL: </span><span style=\'color: blue;\'>'. mysql_error() .'</span>';
- break;
-
- }
-
- if ($this->save_errors)
- {
- //On sauvegarde les erreurs dans un fichier:
- if (!scandir($this->path_errors . date('d-m-Y') ) ) //Si un dossier du jours actuel éxiste on le définis dans la variable contenant le chemin de destination du fichier d'erreurs
- mkdir ($this->path_errors . date('d-m-Y') );
- $this->path_errors .= date('d-m-Y') .'/';
-
- $file_error = fopen ($this->path_errors . date('H\h i\m\i\n s\s') .'.txt', 'w');
- if ($type == 'connect')
- fputs ($file_error, "-----------------------------------\r
- ERREUR SQL DANS LE FICHIER:\r\n
- http://". $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'] ."\r
- -----------------------------------
- \r\n
- Erreur lors de la connexion à MySQL:
-
- Serveur:\r\n".
- $infos[0] ."
-
- Identifiant:\r\n".
- $infos[1] ."
-
- Mot de passe:\r\n".
- $infos[2]
- );
- elseif ($type == 'select_db')
- fputs ($file_error, "-----------------------------------\r
- ERREUR SQL DANS LE FICHIER:\r\n
- http://". $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'] ."\r
- -----------------------------------
- \r\n
- Erreur lors de la connexion à la base de donnée de nom:\r\n".
- $infos
- );
- elseif ($type == 'query')
- {
- $infos = preg_replace ('`[[:space:]]+|[[:blank:]]+`', ' ', $infos);
- fputs ($file_error, "-----------------------------------\r
- ERREUR SQL DANS LE FICHIER:\r\n
- http://". $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'] ."\r
- -----------------------------------
- \r\n
- Erreur dans la requete:\r\n".
- trim($infos) ."
-
- Erreur numéro:\r\n".
- mysql_errno() ."
-
- Erreur MySQL:\r\n".
- mysql_error()
- );
- }
- fclose ($file_error);
- }
-
- if ($this->aff_errors)
- echo $this->error;
- }
- }
- ?>
<?php
//Script pour une class php4 avec gestion des erreus par fichier, nombre de requetes
class Mysql
{
var $host = 'localhost'; //Valeur par défault du serveur
var $user = 'cerfvice'; //Valeur par défault de l'utilisateur
var $pass = 'eh2eeevu'; //Valeur par défault du mot de passe
var $db = 'cerfvice_'; //Valeur par défault de la base de donnée
var $aff_errors; //Si true on affiche les erreurs, si false on ne les affiches pas
var $save_errors; //Si true on enregistre les erreurs, si false on ne les enregistre pas
var $path_errors = './logs/errors_sql/'; //Contient le chemin relatif du dossier où sont stoqué les fichié d'érreurs SQL
var $error; //On initialise la variable $error qui contiendras les erreurs personnalisées
var $nbr_query = 0; //On initialise la variable $nbr_query à 0
function Mysql($serveur = false, $client = false, $password = false, $data_abse = false, $list_errors = true, $register_errors = true) //__construct
{
//On définis les variables servants à la gestion des erreurs:
if ($list_errors)
$this->aff_errors = true;
else
$this->aff_errors = false;
if ($register_errors)
$this->save_errors = true;
else
$this->save_errors = false;
//On vérifie si l'utilisateur demande une configuration précise:
if ($serveur)
$this->host = $serveur;
if ($client)
$this->user = $client;
if ($password)
$this->pass = $password;
if ($data_abse)
$this->db = $data_abse;
$this->Connect($this->host, $this->user, $this->pass);
$this->Select_db($this->db);
}
function Connect($host, $user, $pass)
{
$infos = array($this->host, $this->user, $this->pass); //Array contenant le nom d'accès au serveur, le nom de l'utilisateur et le mot de passe pour la fonction Error qui gère les erreurs
mysql_connect ($host, $user, $pass) or die($this->Error($infos, 'connect') );
}
function Select_db($db, $id = false)
{
if ($id)
mysql_select_db ($db, $id) or die($this->Error($db, 'select_db') );
else
mysql_select_db ($db) or die($this->Error($db, 'select_db') );
}
function Close($id = false) //__destruct /-/-/-/-/-/ Destructeur non mis en place, car c'est une class optimisé pour php4
{
if ($id)
mysql_close ($id);
else
mysql_close ();
}
function Query($sql)
{
$query = mysql_query($sql) or die($this->Error($sql, 'query') );
++$this->nbr_query;
return $query;
}
function Fetch($req, $type = 'assoc')
{
switch ($type)
{
case 'row':
$fetch = mysql_fetch_row ($req);
break;
case 'array':
$fetch = mysql_fetch_array ($req);
break;
case 'assoc':
$fetch = mysql_fetch_assoc ($req);
break;
case 'object':
$fetch = mysql_fetch_object ($req);
break;
}
return $fetch;
}
function Query_array($sql, $type = 'assoc')
{
$query = $this->Query ($sql);
$array = $this->Fetch($query, $type);
return $array;
}
function Query_array_plus($sql, $type = 'assoc')
{
$array = array();
$query = $this->Query ($sql);
while ($result = $this->Fetch($query, $type) )
$array[] = $result;
return $array;
}
function Error($infos, $type)
{
switch ($type)
{
case 'connect':
$this->error = 'Nous ne pouvons pas vous connecter avec ces données:
<br />
<span style=\'color: red;\'>Serveur: </span><span style=\'color: blue;\'>'. $infos[0] .'</span>
</br />
<span style=\'color: red;\'>Identifiant: </span><span style=\'color: blue;\'>'. $infos[1] .'</span>
</br />
<span style=\'color: red;\'>Mot de passe: </span><span style=\'color: blue;\'>'. $infos[2] .'</span>';
break;
case 'select_db':
$this->error = 'Nous n\'avons pas pus vous connecter à la base de donnée:
</br />
<span style=\'color: red;\'>Base de donnée: </span><span style=\'color: blue;\'>'. $infos .'</span>';
break;
case 'query':
$this->error = 'Il y à une erreur dans la requete.
<br />
<span style=\'color: red;\'>Requete: </span><span style=\'color: blue;\'>'. $infos .'</span>
<br />
<span style=\'color: red;\'>Erreur numéro: </span><span style=\'color: blue;\'>'. mysql_errno() .'</span>
<br />
<span style=\'color: red;\'>Erreur MySQL: </span><span style=\'color: blue;\'>'. mysql_error() .'</span>';
break;
}
if ($this->save_errors)
{
//On sauvegarde les erreurs dans un fichier:
if (!scandir($this->path_errors . date('d-m-Y') ) ) //Si un dossier du jours actuel éxiste on le définis dans la variable contenant le chemin de destination du fichier d'erreurs
mkdir ($this->path_errors . date('d-m-Y') );
$this->path_errors .= date('d-m-Y') .'/';
$file_error = fopen ($this->path_errors . date('H\h i\m\i\n s\s') .'.txt', 'w');
if ($type == 'connect')
fputs ($file_error, "-----------------------------------\r
ERREUR SQL DANS LE FICHIER:\r\n
http://". $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'] ."\r
-----------------------------------
\r\n
Erreur lors de la connexion à MySQL:
Serveur:\r\n".
$infos[0] ."
Identifiant:\r\n".
$infos[1] ."
Mot de passe:\r\n".
$infos[2]
);
elseif ($type == 'select_db')
fputs ($file_error, "-----------------------------------\r
ERREUR SQL DANS LE FICHIER:\r\n
http://". $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'] ."\r
-----------------------------------
\r\n
Erreur lors de la connexion à la base de donnée de nom:\r\n".
$infos
);
elseif ($type == 'query')
{
$infos = preg_replace ('`[[:space:]]+|[[:blank:]]+`', ' ', $infos);
fputs ($file_error, "-----------------------------------\r
ERREUR SQL DANS LE FICHIER:\r\n
http://". $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'] ."\r
-----------------------------------
\r\n
Erreur dans la requete:\r\n".
trim($infos) ."
Erreur numéro:\r\n".
mysql_errno() ."
Erreur MySQL:\r\n".
mysql_error()
);
}
fclose ($file_error);
}
if ($this->aff_errors)
echo $this->error;
}
}
?>
Conclusion
Pour utiliser cette class il vous faut en premier lieu paramétré les quelques variables pouvant l'être dans la déclaration de la class, ensuite vous pouvez donc en toutes logique vous connecter à MySQL en appelant la class de cette manière:
$mysql = new Mysql();
Les deux derniers arguments du constructeur permettent de choisir si l'on veut afficher les erreurs et les enregistrer, pour le reste il n'y as rien de méchant.
J'attends vos critiques avec impatience.
Au revoir.
Historique
- 22 août 2005 23:43:08 :
- Mise à jours du code
Sources du même auteur
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
fatal error sur chargement de class [ par fabrice_pi ]
salut à tous,j'utilise une classe PHP pour faire mes taleaux en html. depuis peu j'ai l'erreur suivante :Fatal error: Cannot instantiate non-existent
erreur class redeclare !!! [ par g_fuck ]
Salut tout le monde! il se fait que dans une de mes page j'ai besoin d'une class CLASSE_1 donc je fait dans ma page include(url/CLASSE_1.php);Et comme
[POO] Une classe dans une classe [ par Mrreivax ]
Bonsoir.Et bien voila. J'ai créé une classe de gestion des images.J'ai par la suité créé une autre classe de gestion de banières.Mais, cette dernière
You have an error in your SQL syntax - Erreur dans ma requete [ par christuckers ]
Bonjour a tous ceux qui me liront aujourd'hui. Je fais appel à vos services car je rencontre une erreur qui me prend la tête depuis une semaine... V
sql server erreur de conexion [ par lotfi213_b19 ]
bonjour,je travaille sur un projet deja (mal) fait en ASP mais n'est pas fini,j'ai decidé de le refaire en php,la base de données est deja developpée
erreur de transcription [ par claudero ]
[^^confus2]Bonjour, j'ai un forum en php avec 2 tbl sur sql. Je crée une question soit avec un fichier php ou html et si j'introduis un "L'" une apost
erreur de SQL syntaxe [ par cire2003 ]
Bonjour J'ai beau essayer toutes les combinaisons possibles, rien a faire, je continu de me faire dire qu'il y a une erreur de syntaxe. J'utilise le
erreur de ponctuation sur sql [ par anto25 ]
J'ai regardé plusieurs site mais je ne comprend pas ou se trouve l'eereur de ponctuation pouvez vous m'aidez. Voici l'erreurIl semble qu'il y ait une
Problème de variables en dehors d'une class [ par yukimura27 ]
Bonjour à tous, J'ai un problème pour utiliser une variable en dehors de ma class. Voici mon code: class pouet { public function SelectAll () {
Procédure ou classe de gestion des options intélligente [ par Heirem ]
Bonjour, Je cherche un script qui me permettrait de gérer les options d'un site de façon intelligente et optimisée. Le problème venant de la quantité
|
Derniers Blogs
IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc SHAREPOINT BLOG SITE, PROBLèME D'ARCHIVESSHAREPOINT BLOG SITE, PROBLèME D'ARCHIVES par junarnoalg
Dernièrement, nous avons migré le site
myTIC
vers un nouveau serveur SharePoint 2010. Dans les contenus que nous vouloins récupérer, nous avions un certain nombre de blogs.
Nous avons utilisé les commandes Power...
Cliquez pour lire la suite de l'article par junarnoalg
Forum
GOOGLE MAPGOOGLE MAP par fatmanajjar
Cliquez pour lire la suite par fatmanajjar
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|