Formation par Olivier Duffez

Formation au référencement par Olivier Duffez, créateur de WebRankInfo !
Une formule efficace alliant théorie et pratique, avec une haute disponibilité des intervenants
Cette formule a déjà convaincu plusieurs centaines d'entreprises, pourquoi pas vous ?
Réservez vite votre place en ligne (convention possible pour imputer sur le budget formation)

Formation référencement Marseille

[script] Relatif à Mysql (gestion d'erreur, etc.)

Poster un nouveau sujet Imprimer cette discussion    Forum -> Développement d'un site Web   Les dernières discussions de ce forum sont disponibles au format RSS
Voir le sujet précédent :: Voir le sujet suivant  
Auteur Message
 
medium69
WRInaute accro
WRInaute accro

Inscrit le: 07 Mai 2005
Messages: 2149
Localisation: Je sais pas trop ;)

URL permanente de ce messagePosté le : Ven Oct 28, 2005 17:50    Sujet du message: [script] Relatif à Mysql (gestion d'erreur, etc.)

Voici un code qui me sert bien et qui peut vous aider... à vous de voir.
Il permet de se connecté à une base de données et de renvoyer un message d'erreur en français en cas de problème.

Arrow Se connecte au serveur SQL et sélectionne une BDD
Code:

function connectBDD($bdd) { // nom de la base de donnée   
$connect_serveur = @mysql_connect($nbdd['serveur'], $bdd['login'],  $bdd['pass'], MYSQL_CLIENT_COMPRESS); // connection au serveur SQL   
$connect_bdd = @mysql_select_db($bdd['base'], $connect_serveur); // connection à la base de donnée   

if   (!$connect_serveur || !$connect_bdd) { // Si la connection au serveur ou à la base échoue         
$messErrSql   = '<p><strong>Échec de la connection SQL.<br />';
$messErrSql   .= 'Un e-mail à été envoyé à l\'administrateur pour lui signaler le problème.<br /><br />';
$messErrSql   .= 'Voici le message d\'erreur renvoyé :<br />';
$messErrSql   .= 'Code erreur ';

emailErreur($messErrSql); // envoi d'un e-mail à l'admin pour lui signaler l'erreur SQL         

exit($messErrSql.mysql_errno().' : '.mysqlErr() ); // affichage du message d'erreur pour l'utilisateur en fonction du N° de l'erreur SQL
}   
return $SQL_connect; // l'identifiant de connection
}


Arrow Exécution d'une requête SQL
Code:
function requeteSQL($SQL_requete, $SQL_desc) { // requête SQL, description de la requête
$SQL_result = @mysql_query($SQL_requete); // Envoi la requête au serveur SQL

if   (!$SQL_result) { // si la requête a échouée
$messErrSql = '<p><strong>Le serveur SQL est dans l\'impossibilité d\'effectuer la requête pour '.$SQL_description.'<br />';
$messErrSql .= 'Un e-mail à été envoyé à l\'administrateur pour lui signaler le problème.<br /><br />';
$messErrSql .= 'Voici le message d\'erreur renvoyé par la base de données :<br />';
$messErrSql .= 'Code erreur ';

emailErr($messErrSql); // envoi d'un e-mail à l'admin pour lui signaler l'erreur SQL

exit($messErrSql.mysql_errno().' : '.mysqlErr() ); // affichage du message d'erreur pour l'utilisateur en fonction du N° de l'erreur SQL
}
return SQL_resultat; // résultat de la requête
}


Arrow Retourne un message d'erreur en fonction du N° d'erreur retourné par MySQL
Code:
function mysqlErr() {
$partie = explode('\'', mysql_error() ); // On découpe le message d'erreur retourné par mysql_error()   
   
switch   (mysql_errno() ) { // On cherche quel N° d'erreur SQL à été retouné
case 1040 : // Too many connections
return 'Trop de connections simultanées. Merci de revenir dans quelques minutes ou de recharger la page</strong></p>';
break;
case 1044 : // Access denied for user: 'login' to database 'nombase'
return 'La base de données "'.$partie[3].'" n\'a pas été trouvée.</strong></p>';
break;
case 1045 : // Access denied for user: 'login' (Using password: YES)
return 'L\'utilisateur désigné "'.$partie[1].'" n\'a pas été trouvé.</strong></p>';
break;         
case 1046 : // No Database Selected
return 'Aucune base de données n\'à été sélectionnée.</p>';
break;         
case 1052 : // Column: 'champ' in where clause is ambiguous
return 'La clause WHERE est ambiguë pour la colonne '.$partie[1].'.</strong></p>';
break;         
case 1053 : // Server shutdown in progress
return 'Le serveur SQL à été arrêté. Essayez de recharger la page ou revenez dans quelques minutes.</strong></p>';
break;
case 1054 :
switch   ($partie[3]) { // On cherche quelle chaine est retournée par $morceau[3]
case 'field list' : // Unknown column 'nomChamp' in 'field list'
return 'Le champ "'.$partie[1].'" précisé dans la liste des champs n\'a pas été trouvé.</strong></p>';
break;
case 'where clause' : // Unknown column 'nomChamp' in 'where clause'
return 'Le champ "'.$partie[1].'" précisé dans la clause WHERE n\'a pas été trouvé.</strong></p>';
break;
default :
return mysql_error();
}
break;
case 1064 : // You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'requete'
return 'Une erreur de syntaxe SQL se trouve dans la requête "'.$partie[1].'".</strong></p>';         
break;
case 1065 : // Query was empty
return 'Aucune requête SQL n\'à été trouvée.</strong></p>';         
break;
case 1109 : // Unknown table 'nom_table' in where clause
case 1146 :
return 'La table "'.$partie[1].'" n\'a pas été trouvée dans la clause WHERE.</strong></p>';         
break;         
case 2002 : // Can't connect to local MySQL server through socket 'chemnin d'accès' (2)
return 'Échec lors de la connection au serveur SQL.</strong></p>';
break;
case 2005 : // Unknown MySQL Server Host 'serveur' (2)
return 'Le serveur SQL "'.$partie[1].'" n\'a pas été trouvé.</strong></p>';
break;
case 2013 : // Lost connection to MySQL server during query
return 'La connection au serveur SQL à été perdue lors de la requête. Essayez de recharger la page pour résoudre le problème.</strong></p>';
break;
default :
return mysql_error();
}
}


Arrow Envoi un e-mail pour signaler le problème à l'admin
Code:
function emailErr($messErr) { // message d'erreur
$subject   = 'Erreur SQL '.mysql_errno();
$message   = $messErr.mysql_errno().' : '.mysqlErr();
$expediteur   = 'email expéditeur'; // L'email de l'expéditeur.
}
   
/* Initialisation des variables */
$retour      = 'adresse retour';                     // e-mail de retour
$message    = str_replace('<br />', "\n", $message);               // message traité pour les sauts de ligne
$to         = 'email expéditeur';                        // e-mail du destinataire
$headers   = 'From: '.$expediteur."\r\n".'Reply-To: '.$retour."\r\n";   // en-tête de l'e-mail
   
   mail($to, $subject, $message, $headers); // envoi d'un e-mail à l'administrateur
}


Utilisation dans ton code par exemple :
Code:
$bdd = array('serveur' => 'nomDuServeur', 'login' => 'tonLogin', 'pass' => '*****', 'base' => 'NomBDD');

$resultat = requeteSQL('SELECT * FROM NomDeLaTable ORDER BY nomDuChamp', 'trouver les thèmes du glossaire.'); // requête SQL + description de la requête
$SQL_connect = connectBDD($bdd); // Connection à la BDD
mysql_close(); // Fermeture de la connection



Celta permet de regrouper tout le code dans des fontions et d'une part de signaler à votre visiteur le problème en français, et à vous de recevoir le problème et de le cerner de suite.

Pour ma part, je regroupe même les requêtes dans une fonction.
Cela allège énormément le temps des MAJ.
Je les regroupe dans une fonction par base de données.
 
medium69 Visiter le site web du posteur
Donna
Nouveau WRInaute

Inscrit le: 23 Oct 2005
Messages: 19
Localisation: Bretagne

URL permanente de ce messagePosté le : Ven Oct 28, 2005 18:19    Sujet du message: [script] Relatif à Mysql (gestion d'erreur, etc.)

Bizour medium69 Very Happy

alors je ne peu dire que merci Wink

a vais allez faire un test en local, que du bonheur ce sur super forum.

Merci medium69 Very Happy
 
Donna
medium69
WRInaute accro
WRInaute accro

Inscrit le: 07 Mai 2005
Messages: 2149
Localisation: Je sais pas trop ;)

URL permanente de ce messagePosté le : Sam Oct 29, 2005 1:16    Sujet du message: [script] Relatif à Mysql (gestion d'erreur, etc.)

Je croyais rendre service, mais cela n'a pas l'air de vous enchanter.

J'attend donc vos critiques sur ce bout de script pour l'améliorer alors Wink
 
medium69 Visiter le site web du posteur
tonguide
WRInaute passionné
WRInaute passionné

Inscrit le: 28 Nov 2003
Messages: 984

URL permanente de ce messagePosté le : Jeu Nov 17, 2005 3:05    Sujet du message: [script] Relatif à Mysql (gestion d'erreur, etc.)

function requeteSQL($SQL_requete, $SQL_desc) { // requête SQL, description de la requête
$SQL_result = @mysql_query($SQL_requete); // Envoi la requête au serveur SQL

if (!$SQL_result) { // si la requête a échouée
$messErrSql = '<p><strong>Le serveur SQL est dans l\'impossibilité d\'effectuer la requête pour '.$SQL_description.'<br />';


$SQL_description ... = $SQL_desc
non ?

Si tu pouvais me renseigné sur "MYSQL_CLIENT_COMPRESS" je cherche à comprendre précisement ce que fais SQL quand on rajoute ça

Jeremy
 
tonguide Visiter le site web du posteur
medium69
WRInaute accro
WRInaute accro

Inscrit le: 07 Mai 2005
Messages: 2149
Localisation: Je sais pas trop ;)

URL permanente de ce messagePosté le : Ven Nov 18, 2005 17:47    Sujet du message: [script] Relatif à Mysql (gestion d'erreur, etc.)

Cela envoie les donées sous forme compressée. (à partir de PHP 4.3.0)
 
medium69 Visiter le site web du posteur
medium69
WRInaute accro
WRInaute accro

Inscrit le: 07 Mai 2005
Messages: 2149
Localisation: Je sais pas trop ;)

URL permanente de ce messagePosté le : Dim Nov 20, 2005 14:35    Sujet du message: [script] Relatif à Mysql (gestion d'erreur, etc.)

tonguide a écrit:
function requeteSQL($SQL_requete, $SQL_desc) { // requête SQL, description de la requête
$SQL_result = @mysql_query($SQL_requete); // Envoi la requête au serveur SQL

if (!$SQL_result) { // si la requête a échouée
$messErrSql = '<p><strong>Le serveur SQL est dans l\'impossibilité d\'effectuer la requête pour '.$SQL_description.'<br />';


$SQL_description ... = $SQL_desc
non ?

Si tu pouvais me renseigné sur "MYSQL_CLIENT_COMPRESS" je cherche à comprendre précisement ce que fais SQL quand on rajoute ça

Jeremy


Oui il me semble Wink
 
medium69 Visiter le site web du posteur
 
Montrer les messages depuis:   
Revenir en haut    Forum -> Développement d'un site Web Toutes les heures sont au format GMT + 2 Heures
Page 1 sur 1 - 
Connexion
Nom d'utilisateur:    Mot de passe:      Se connecter automatiquement à chaque visite    

A lire dans l'actualité sur WRI :

Définitions :

CLIQUEZ ICI pour vous inscrire à WebRankInfo (forum, annuaire, outils...)

Connexion

© 2001-2005 phpBB Group, support français
Personnalisation : WebRankInfo ™


 ODP  Firefox  Alsacreations  annuaire webmaster Yagoort