Page 1 sur 1

Problème gestion des erreurs dans php 5

Posté : 06 mars 2009, 14:46
par @Fredrick
Bonjour,

Existe t-il un moyen (ou une astuce) pour gérer les erreurs avec php ? je vous explique mon cas :

Je suis en train de créer une appliweb permettant d'administrer et d'effectuer des requêtes mysql, l'utilisateur a le moyen d'entrer des commandes SQL via un formulaire. Si la commande est correcte, le résultat s'affiche dans un tableau, mais s'il y a une erreur (par exemple utiliser une table inexistante) je tombe sur la page d'erreur de php, ce qui bloque complétement mon application.

Y a t-il un système genre try/catch permettant de renvoyer l'utilisateur vers une page d'erreur que j'aurai préalablement créée à cet effet ?



Merci.

Posté : 06 mars 2009, 14:57
par Sodams
Tout simplement en redirigeant l'utilisateur vers la page error en cas d'exception.
try
{
     throw new Exception();
}
catch(Exception $e)
{
     header('loaction:errorPage.php'); 
}

Posté : 06 mars 2009, 15:07
par @Fredrick
Merci mais j'ai déja essayé un try/catch, mais en php ça fonctionne seulement pour les exceptions, pas pour les erreurs.

Posté : 06 mars 2009, 15:31
par Ryle
Il te suffit d'utiliser le résultat de la fonction mysql_query() si ta base est MySQL.

Cette fonction retourne FALSE en cas d'erreur dans le traitement de la requête. Tu peux ainsi savoir si la requête à réussi ou non et rediriger l'utilisateur ou lui afficher le message d'erreur de ton choix :)
<?php
$result = mysql_query('SELECT * WHERE 1=1');
if (!$result) {
    die('Requête invalide : ' . mysql_error());
}
?> 

Posté : 06 mars 2009, 16:07
par FreakDev
tu peux également utiliser PDO, et lever les exceptions PDO dans un try catch, ou encore implémenter une gestion personalisée des erreurs (et d'envoyer des exceptions "personnalisées") avec la fonction set_error_handler (mais cette solution me semble un peu plus "périlleuse")