Bonjour,
Aujourd'hui je m'intéresse aux exceptions personnalisé pour un projet, ayant des erreurs MySQL car certains champs
sont en unique par exemple, je souhaite donc intercepté le code d'erreur, modifier le message et afficher
le message d'erreur, le soucis c'est que ma classe d'exception perso est totalement zapé, comme si elle existait pas
et je me retrouve avec le message d'origine.
Voici ma connexion :
Ma class exception perso :
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
17 <?php function connect_bdd() { try { $bdd = new PDO('mysql:host='.BDD_Host.';dbname='.$_SESSION["Bdd"], BDD_User, BDD_Pass); $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); return $bdd; } catch(Exception $e) { die('ERREUR PDO dans ' . $e->getFile() . ' L.' . $e->getLine() . ' : ' . $e->getMessage()); } } ?>
L'appel de mes classes :
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
17
18
19
20
21
22
23
24
25 <?php class customException extends Exception { public function __construct($message = NULL,$code = 0) { parent::__construct($message, $code); } public function getMessageplus() { switch($this->code) { case 23000 : $message = "Il existe déjà un enregistrement dans la base de données, veuillez choisir d'autres valeurs."; break; default : $message = $this->message; break; } return $message; } } ?>
Mon algorithme :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 <?php /**************************************/ /* Chargement automatique des classes */ /**************************************/ set_include_path(Classes_Repertoire); spl_autoload_register(); /**************************************/ ?>
Je cherche depuis hier, j'ai lu toute la doc possible, même ici, j'ai rien trouver de plus, surtout que c'est basique =/et j'ai même un bouquin sur PHP5 a côté de moi et rien a faire ! je comprends pas ...
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
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61 <?php try { $utilisateur = new utilisateur($_POST["Identifiant"],$_POST["Motdepasse"],$_POST["Confmotdepasse"]); $bdd->beginTransaction(); $req = $bdd->prepare(ajout_utilisateur()); $req->bindValue(':Identifiant', $utilisateur->identifiant); $req->bindValue(':Motdepasse', $utilisateur->getmotdepasse()); $req->bindValue(':SDA', Id_null($_POST["NumSDA"])); if(!$req->execute()) $bdd->rollBack(); else { $IdUtilisateur = $bdd->lastInsertId(); $req = $bdd_admin->prepare(ajout_utilisateur_admin()); $req->bindValue(':IdUti', $IdUtilisateur); $req->bindValue(':Identifiant', $utilisateur->getidentifiantbdd()); $req->bindValue(':IdBdd', $_SESSION["IdBdd"]); if(!$req->execute()) $bdd->rollBack(); else { foreach($_POST["droitsUtilisateur"] as $droits) { $req = $bdd->prepare(ajout_droits_utilisateur()); $req->bindValue(':IdUtilisateur', $IdUtilisateur); $req->bindValue(':IdNavigation', $droits); if(!$req->execute()) { $bdd->rollBack(); break; } } } } $bdd->commit(); unset($utilisateur); header ("Location: index.php?page=utilisateur"); } catch(customException $e) { error_page($e->getMessageplus()); } catch(Exception $e) { error_page($e->getMessage()); } ?>
Quelqu'un saurait il m'aider ? Merci d'avance.






Répondre avec citation





Partager