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 :
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());
        }
    }
?>
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
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;
        }
    }
?>
L'appel de mes classes :
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();
    /**************************************/
?>
Mon algorithme :
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());
                    }
?>
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 ...


Quelqu'un saurait il m'aider ? Merci d'avance.