Précédent   Forum des professionnels en informatique > PHP > Langage > Syntaxe
Syntaxe Forum d'entraide sur la syntaxe de PHP et la POO. Avant de poster -> FAQ syntaxe, Cours d'initiation et cours de POO
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 13/05/2008, 08h40   #1
Membre du Club
 
Inscription : mars 2008
Messages : 234
Détails du profil
Informations forums :
Inscription : mars 2008
Messages : 234
Points : 46
Points : 46
Par défaut PHP + Access : gérer un message d'erreur

Je fais le INSERT dans une requête.
Disons que des informations sont envoyées d'un formulaire vers un fichier contenant le code PHP pour l'insertion des données dans la BDD !

Le message d'erreur est le suivant (si je rentre un nom déjà existant) :


Citation:
Fatal error: Uncaught exception 'com_exception' with message '<b>Source:</b> Microsoft OLE DB Provider for ODBC Drivers<br/><b>Description:</b> [Microsoft][Pilote ODBC Microsoft Access]
Modifications non effectu es: risque de doublons dans champs index, cl principale ou relation interdisant les doublons.
Modifiez les donn es des champs contenant les doublons, enlevez ou red finissez l'index pour permettre les doublons et recommencez.
' in C:\Program Files\EasyPHP 2.0b1\www\projet\AJAX\actionBDD_ajouter.php:166 Stack trace: #0 C:\Program Files\EasyPHP 2.0b1\www\projet\AJAX\actionBDD_ajouter.php(166): com->execute('INSERT INTO dep...') #1 {main} thrown in C:\Program Files\EasyPHP 2.0b1\www\projet\AJAX\actionBDD_ajouter.php on line 166

Suite à l'erreur, les autres requêtes qui suivent ne sont pas réalisées. Par exemple, si j'effectue (directement après la requête générant l'erreur) une insertion d'un nom qui n'ai pas encore présent dans le champs de la BDD, alors rien ne se passe (l'insertion n'est pas effectuée --> la requête n'est pas lue)

Je souhaite donc savoir s'il est possible de faire un onerror --> dire à l'utilisateur que le nom existe deja (autrement dit analyser le message d'erreur - peut être qu'un code erreur y correspond) ou sinon je rajoute des tests (un peu lourd) pour^être sure de ne jamais rencopntrer le problème.

Je souhaite mettre en place la 1ère solution de manière à informer l'utilisateur !
polothentik est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/05/2008, 09h35   #2
Membre éprouvé
 
Homme
Inscription : août 2006
Messages : 313
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 27
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Secteur : High Tech - Électronique et micro-électronique

Informations forums :
Inscription : août 2006
Messages : 313
Points : 497
Points : 497
La tu mets le doigt dans les choses pas glop de php. La gestion des messages d'erreur ...

Tu dois pouvoir l'intercepter avec un gestionnaire d'erreur personnalisé set_error_handler

Apres il y'a une petite astuce pour faire propre, c'est de renvoyer, avec ton gestionnaire d'erreur, des exceptions.

Ainsi, tu pourras le traiter directement dans ton code et non au niveau d'un gestionnaire tres abstrait.

*edit*

A priori ton erreur est deja une exception.
Dans ce cas, tu peux utiliser un bloc :
Code :
1
2
3
4
5
6
 
try{
    //mes instructions ou l'erreur peut se declencher
} catch(com_exception $e){
    //Que faire en cas d'erreur
}
Phelim est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/05/2008, 09h48   #3
Membre du Club
 
Inscription : mars 2008
Messages : 234
Détails du profil
Informations forums :
Inscription : mars 2008
Messages : 234
Points : 46
Points : 46
Du coup est-ce qu'il ne vaut pas mieux que j'effectue un test sur l'éxistence dans la table ou non de la donnée envoyée (cela représente une requete de plus), plutot que d'eesayer de gérer les errerus...

Si je suis suffisament rigoureux, je devrais pouvoir éviter tous problèmes !

Qu'en penses-tu ?

Merci à toi
polothentik est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/05/2008, 10h51   #4
Membre éprouvé
 
Homme
Inscription : août 2006
Messages : 313
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 27
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Secteur : High Tech - Électronique et micro-électronique

Informations forums :
Inscription : août 2006
Messages : 313
Points : 497
Points : 497
Un vieil adage dit :
Citation:
Mieux vaut prévenir que guérir
C'est valable en informatique.
Phelim est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/05/2008, 11h27   #5
Membre du Club
 
Inscription : mars 2008
Messages : 234
Détails du profil
Informations forums :
Inscription : mars 2008
Messages : 234
Points : 46
Points : 46
J'en prend bonne note ! héhé
polothentik est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 16h36.


 
 
 
 
Partenaires

Hébergement Web