Sebastien Posté 28 Septembre 2006 Posté 28 Septembre 2006 Existe-t-il un moyen d'afficher une page d'erreur personnalisée quand MySQL est en panne, un peu à la manière des 404 personnalisées ?
captain_torche Posté 28 Septembre 2006 Posté 28 Septembre 2006 Lors de ta connexion Mysql, tu fais : <?php$connexion = mysql_connect($host, $user, $pwd);if(!$connexion) Header('Location: /mysql_plante.html');?>
Sebastien Posté 28 Septembre 2006 Auteur Posté 28 Septembre 2006 Merci Captain, j'utilise tel quel en adaptant juste l'URL de ma page d'erreur ? Pour Dotclear saurait tu dans quel fichier se fait la connexion ?
captain_torche Posté 28 Septembre 2006 Posté 28 Septembre 2006 Logiquement, oui, tu l'utilises tel quel. Par contre, comme je connais pas DotClear, je pourrai pas être absolument affirmatif.
xpatval Posté 28 Septembre 2006 Posté 28 Septembre 2006 Me semble que cela se situe dans dotclear/inc/classes/class.mysql.php, mais il va falloir bidouiller un peu le code de la classe xpatval
smile Posté 28 Septembre 2006 Posté 28 Septembre 2006 Find : function setError() { if ($this->con_id) { $this->error = mysql_error($this->con_id); $this->errno = mysql_errno($this->con_id); } else { $this->error = (mysql_error() !== false) ? mysql_error() : 'Unknown error'; $this->errno = (mysql_errno() !== false) ? mysql_errno() : 0; } } Replace function setError() { Header('Location: /mysql_plante.html'); } Mais bon c'est une solution il y'en d'autres
Sebastien Posté 28 Septembre 2006 Auteur Posté 28 Septembre 2006 Merci à tous de vos suggestion. Malheureusement je serai incapable de les mettre en oeuvre ne maitrisant pas PHP...
captain_torche Posté 28 Septembre 2006 Posté 28 Septembre 2006 La version de smile est facile à mettre en peuvre, je pense. Reste à savoir dans quel fichier se trouve la fonction à remplacer.
smile Posté 28 Septembre 2006 Posté 28 Septembre 2006 Comme l'a souligné xpatval > dotclear/inc/classes/class.mysql.php
Sebastien Posté 28 Septembre 2006 Auteur Posté 28 Septembre 2006 Merci Smile ! je vois ce que fait le nouveau code que tu m'a fournit, mais l'ancien que faisait il (en français) ? Et est-ce que sa mise en oeuvre risque de perturber Dotclear ou les plugins ?
smile Posté 28 Septembre 2006 Posté 28 Septembre 2006 Aucunement, il devrait pas perturber Dotclear, la fonction erreur sans modifications indiquait le message d'erreur mysql, ici tu fais une redirection mais il faut que tu vois à l'usage si le header est bien pris en compte, je n'ai pas dotclear installé actuellement, il faut tester ... Tu peux telecharger le fichier modifié ici class.mysql.php et le remplacer, (garde l'ancienne version si t'as un problème quelconque ...) http://www.mayocrea.com/demo/tel.php?Fichi...s.mysql_new.php
Sebastien Posté 28 Septembre 2006 Auteur Posté 28 Septembre 2006 Super merci beaucoup de ton aide Smile, je vais tester ça ce weekend
dièse Posté 28 Septembre 2006 Posté 28 Septembre 2006 Euhh c'est un peu tendu quand même... je ne me risquerai pas à ça . Avec cette modification tu empêches la navigation sur ton site quelque soit le type d'erreur que MySQL te retourne. La solution la plus propre serait de redéfinir le gestionnaire d'erreurs de php, pour personnaliser ce type d'erreur mais là ça devient beaucoup plus compliqué à développer...
smile Posté 28 Septembre 2006 Posté 28 Septembre 2006 C'est que Sébastien souhaitait, une page personnalisée en cas d'erreur mysql, mais en effet il ne distingue pas dans ce cas le type d'erreur. IL faut recuperer l'erreur ($this->error) , pourquoi pas en y creant un fichier log si on a pas acces à la machine, beaaucoup de possibilités, tout dépend de son souhait
Sebastien Posté 28 Septembre 2006 Auteur Posté 28 Septembre 2006 Ah il y a plusieurs erreurs possibles ? En fait mon idée était de mettre une page d'erreur à destination des utilisateurs indiquant que le site est momentanément indisponible et les invitant à revenir plus tard quand MySQL est en carafe.
dièse Posté 28 Septembre 2006 Posté 28 Septembre 2006 Bah à priori ce que Sebastien voulait c'est un message personnalisé si MySQL est planté, donc il faudrait faire la redirection que dans le cas où la connection à la base n'est pas possible. Mais ne connaissant pas Dotclear en profondeur, même ça je ne le conseillerai pas
smile Posté 28 Septembre 2006 Posté 28 Septembre 2006 Oui plusieurs erreurs possibles mais de toute manière les enregistrements ne seront pas accessibles quelque soit l'erreur
dièse Posté 28 Septembre 2006 Posté 28 Septembre 2006 Les enregistrements de la requête en cours, mais toutes les autres requêtes peuvent s'éxécuter normalement. Les erreurs mysql ne sont pas bloquantes et le script PHP peut continuer à s'éxécuter tout à fait normalement .
Sebastien Posté 2 Octobre 2006 Auteur Posté 2 Octobre 2006 Merci de votre aide j'ai mis la système en place et il est (malheureusement) à l'oeuvre actuellement : http://s.billard.free.fr/referencement
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant