IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

PHP + Access : gérer un message d'erreur


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    239
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 239
    Points : 84
    Points
    84
    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) :


    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 !

  2. #2
    Membre confirmé

    Homme Profil pro
    Inscrit en
    Août 2006
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Août 2006
    Messages : 317
    Points : 597
    Points
    597
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    }

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    239
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 239
    Points : 84
    Points
    84
    Par défaut
    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

  4. #4
    Membre confirmé

    Homme Profil pro
    Inscrit en
    Août 2006
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Août 2006
    Messages : 317
    Points : 597
    Points
    597
    Par défaut
    Un vieil adage dit :
    Mieux vaut prévenir que guérir
    C'est valable en informatique.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    239
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 239
    Points : 84
    Points
    84
    Par défaut
    J'en prend bonne note ! héhé

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Gérer les messages d'erreurs dans delphi
    Par nakry dans le forum Débuter
    Réponses: 2
    Dernier message: 11/05/2010, 14h32
  2. [PHP-JS] Affichage de message d'erreur
    Par lodan dans le forum Langage
    Réponses: 7
    Dernier message: 20/07/2006, 18h50
  3. [php][mysql]Enlever message d'erreur
    Par Destampy dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 31/05/2005, 10h19
  4. [Message d'erreur] gérer les message d'erreurs
    Par heid dans le forum Langage
    Réponses: 2
    Dernier message: 12/10/2004, 14h57
  5. [ADO][ACCESS] Recupération du message d'erreur
    Par samlerouge dans le forum Bases de données
    Réponses: 4
    Dernier message: 24/06/2004, 23h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo