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 :

[Système] Gestion des erreurs : poursuivre l'affichage d'une page malgré une erreur


Sujet :

Langage PHP

  1. #1
    Expert éminent
    Avatar de 12monkeys
    Homme Profil pro
    Webmaster
    Inscrit en
    Novembre 2006
    Messages
    4 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2006
    Messages : 4 093
    Points : 9 031
    Points
    9 031
    Par défaut [Système] Gestion des erreurs : poursuivre l'affichage d'une page malgré une erreur
    Bonsoir,

    Je suis en train de travailler sur la gestion des erreurs. Les infos du site m'ont bien permis d'avancer sauf le problème suivant :

    J'intègre un script par un include en début des pages html, ce script se connecte à mysql, le problème c'est que si la connexion avec mysql ne se fait pas, la page ne s'affiche pas. Voici mon script :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    error_reporting(0);
     
    function erreurs($mesg) {
    error_log($mesg, 3, "erreurs.log");
    }
     
    $hote = 'localhost';
    $user = '............';
    $mdp = '...........';
    $base = '.................';
     
    $connect = mysql_connect($hote, $user, $mdp) or erreurs($mesg = 'Impossible de se connecter');
    mysql_select_db("$base") or erreurs($mesg = 'Could not select database');
     
    $requete_verif_adr_page = "SELECT adrese_page FROM sess_nb_visites_tot WHERE adresse_page='$adresse_page'";
    $result_verif_adr_page = mysql_query($requete_verif_adr_page) or erreurs($mesg = "erreur query ESSAI 2 voir page existe\n");
    Je voudrais que l'erreur de connexion ne stoppe pas l'affichage de la page. De même, a priori error_log fonctionne bien sauf que le message d'erreur s'affiche aussi sur la page, visible du visiteur, est t'il possible de modifier cela ??

    Merci de votre aide.
    Vous souhaitez participer à la rubrique (X)HTML/CSS, contactez moi.
    débutez avec les CSS
    Pas de MP pour des questions techniques ! Mode d'emploi du forum ; Règles ; Pensez à la balise code ; Pas de SMS !
    Votez pour les messages qui vous ont aidés...

  2. #2
    Expert éminent
    Avatar de 12monkeys
    Homme Profil pro
    Webmaster
    Inscrit en
    Novembre 2006
    Messages
    4 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2006
    Messages : 4 093
    Points : 9 031
    Points
    9 031
    Par défaut
    Personne n'a d'idée ?

    Bon j'ai pensé à une bidouille qui vaut certainement pas grand chose : je place mon include à la fin du document après </html>. Ainsi la page s'affichera d'abord, et s'il y a une erreur elle se produira a la fin de la page. Le message d'erreur s'affichera au bas de la page et donc troublera moins l'internaute...

    Je pense eventuellement à autre chose pour ne pas afficher les messages d'erreur : je place tout le contenu de mon include dans un div que je ferais disparaitre avec un display:none...

    Qu'en pensez vous...
    Vous souhaitez participer à la rubrique (X)HTML/CSS, contactez moi.
    débutez avec les CSS
    Pas de MP pour des questions techniques ! Mode d'emploi du forum ; Règles ; Pensez à la balise code ; Pas de SMS !
    Votez pour les messages qui vous ont aidés...

  3. #3
    Membre actif
    Inscrit en
    Janvier 2004
    Messages
    242
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 242
    Points : 271
    Points
    271
    Par défaut
    Rajoute un @ devant les fonctions qui peuvent poser probleme genre mysql_connect, ou baisse le niveau d'erreur de php.

  4. #4
    Membre habitué Avatar de sab_etudianteBTS
    Inscrit en
    Juin 2006
    Messages
    211
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 211
    Points : 173
    Points
    173
    Par défaut
    Salut,
    Je ne sais pas si j'ai vraiment compris ce que tu veux faire mais bon je tente quand même!
    Voici ma manière à moi de gérer les erreurs :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $maconnexion = connexion();
    $requete="select * from table";
    $resultat=mysql_db_query("nomBDD", $requete, $maconnexion) or die ("Echec requete : " . mysql_error($maconnexion) . "</td></tr></table></body></html>");
    connexion() est une fonction qui renvoit la connexion à la base de données.
    Comme ça même si tu as une erreur liée a la connexion ou même à la requête, ça t'affiche l'erreur, mais aussi il "termine" ta page (tu peux terminer un tableau ou autre...)

    Voilà, en espérant avoir été claire et efficace!
    Je vaux 5 677 200 € sur HumainAVendre.com, et vous ? http://www.humainavendre.com

    Sab

  5. #5
    Membre actif Avatar de Belegkarnil
    Inscrit en
    Juin 2005
    Messages
    289
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Juin 2005
    Messages : 289
    Points : 205
    Points
    205
    Par défaut
    Non, ce qu'il voulait dire c'est ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    error_reporting(0);
     
    function erreurs($mesg) {
    error_log($mesg, 3, "erreurs.log");
    }
     
    $hote = 'localhost';
    $user = '............';
    $mdp = '...........';
    $base = '.................';
     
    $connect = @mysql_connect($hote, $user, $mdp) or erreurs($mesg = 'Impossible de se connecter');
    @mysql_select_db("$base") or erreurs($mesg = 'Could not select database');
     
    $requete_verif_adr_page = "SELECT adrese_page FROM sess_nb_visites_tot WHERE adresse_page='$adresse_page'";
    $result_verif_adr_page = @mysql_query($requete_verif_adr_page) or erreurs($mesg = "erreur query ESSAI 2 voir page existe\n");
    Mais si tu utilises des or die() je crois que cela stoppe le script quand même.
    En utilisant les @, tu peux tester si tu variable de retour est vide, fause,...
    Exemple :
    Le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $connect = @mysql_connect($hote, $user, $mdp) or erreurs($mesg = 'Impossible de se connecter');
    devient :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $connect = @mysql_connect($hote, $user, $mdp);
    if(!$connect) $mesg = 'Impossible de se connecter';
    else {
      ...//On est connecté
    }

  6. #6
    Expert éminent
    Avatar de 12monkeys
    Homme Profil pro
    Webmaster
    Inscrit en
    Novembre 2006
    Messages
    4 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2006
    Messages : 4 093
    Points : 9 031
    Points
    9 031
    Par défaut
    Bonjour

    Merci de votre aide, mais en fait je crois (sous réserve de tester plus à fond) que mon code fonctionne : ce qui posait problème c'est que je n'avais pas étendu mon code à toutes les requêtes mysql de cet include, ce qui a fait qu'en mettant volontairement une erreur à la connexion à la base, la première requête à mysql non protégée par mon code a stoppée l'exécution de la page.

    Sinon pour le reste mon code semble fonctionner : la page s'exécute malgré les erreurs à la base, les erreurs ne sont pas affichées sur la page, mais dans un fichier sur le serveur...

    Merci.
    Vous souhaitez participer à la rubrique (X)HTML/CSS, contactez moi.
    débutez avec les CSS
    Pas de MP pour des questions techniques ! Mode d'emploi du forum ; Règles ; Pensez à la balise code ; Pas de SMS !
    Votez pour les messages qui vous ont aidés...

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

Discussions similaires

  1. [Système] Gestion des droits
    Par Tchinkatchuk dans le forum Langage
    Réponses: 2
    Dernier message: 16/04/2007, 14h55
  2. [Système]gestion des menus
    Par gentoo dans le forum IHM
    Réponses: 3
    Dernier message: 23/03/2007, 15h04
  3. [Système] gestion des sémaphores
    Par kenny49 dans le forum Langage
    Réponses: 3
    Dernier message: 07/03/2007, 11h54
  4. [Système] gestion des fichiers et base de données
    Par noobspower dans le forum Langage
    Réponses: 3
    Dernier message: 26/02/2007, 10h42
  5. [Système] gestion des processus linux
    Par julien.63 dans le forum Langage
    Réponses: 6
    Dernier message: 17/11/2006, 23h16

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