Gestion des exceptions perso
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:
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:
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:
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:
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.