Précédent   Forum des professionnels en informatique > PHP > Langage
Langage Forum sur le langage PHP, la POO, les conventions, la sécurité, etc. Avant de poster : FAQ Langage, toutes les FAQ PHP, cours langage et sources PHP
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 18/10/2011, 16h03   #1
Membre du Club
 
Avatar de zarohn
 
Inscription : mai 2009
Messages : 140
Détails du profil
Informations personnelles :
Âge : 27

Informations forums :
Inscription : mai 2009
Messages : 140
Points : 62
Points : 62
Par défaut Tenter de se connecter à une bdd, puis à une autre ?

Bonjour,

Voila actuellement je commente/décommente mes deux lignes de connexions à une bdd en fonction de si je suis en localhost ou sur mon hébergeur.

Code :
1
2
3
4
5
6
7
8
9
try 
{
   //$bdd = new PDO('mysql:host=localhost;dbname=mabase', 'root', '');
     $bdd = new PDO('mysql:host=sql.hebergeur.com;dbname=mabase', 'monusername', 'monpassword');
}
catch(Exception $e)
{
     die('Erreur de connexion à la BDD : ' . $e->getMessage());
}
Je me demandais donc si il y avait un moyen quelconque de faire en sorte de tester de se connecter à localhost, puis ci ça ne marche pas d'essayer de se connecter à l'hebergeur ? Ce qui m'éviterai de commenter ou décommenter mes fichiers avant envoi sur l'hebergeur.

Merci d'avance
zarohn est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/10/2011, 17h16   #2
Membre émérite
 
Homme Frédéric Bruyère
Chef de projet NTIC
Inscription : novembre 2008
Messages : 124
Détails du profil
Informations personnelles :
Nom : Homme Frédéric Bruyère
Âge : 29
Localisation : Belgique

Informations professionnelles :
Activité : Chef de projet NTIC
Secteur : Conseil

Informations forums :
Inscription : novembre 2008
Messages : 124
Points : 806
Points : 806
Salut,

En cas d'échec de la connexion, PDO lance une "PDOException"; tu peux donc effectuer la tentative de connexion en local dans un premier try, et attrapper l'exception pour lancer la deuxieme connexion:

Code :
1
2
3
4
5
try {
    $bdd = new PDO('local');
} catch (PDOException $e) {
    $bdd = new PDO('hebergeur');
}
__________________
"Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Martin Fowler)
Code62 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/10/2011, 17h38   #3
Membre du Club
 
Avatar de zarohn
 
Inscription : mai 2009
Messages : 140
Détails du profil
Informations personnelles :
Âge : 27

Informations forums :
Inscription : mai 2009
Messages : 140
Points : 62
Points : 62
Salut merci beaucoup
Par contre est ce que je peux faire quelque chose comme ça pour afficher les deux erreurs en cas d’échec des deux tentatives ?

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
try 
{
   $bdd = new PDO('mysql:host=localhost;dbname=mabase', 'root', '');
}
catch(Exception $e1)
{
     try 
     {
        $bdd = new PDO('mysql:host=sql.hebergeur.com;dbname=mabase', 'monusername', 'monpassword');
     }
     catch(Exception $e2)
     {
        die('Erreur de connexion aux BDD : <br />' . $e1->getMessage() . '<br />' . $e2->getMessage());
     }
}
Et aussi quelle différence entre mettre une Exception ou une PDOException ?
Merci d'avance

Edit : Je viens de tester le code ci-dessus, ça marche nickel ! Merci à Code62 pour son aide, je passe le sujet en résolu ...
zarohn est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/10/2011, 18h18   #4
Membre émérite
 
Homme Frédéric Bruyère
Chef de projet NTIC
Inscription : novembre 2008
Messages : 124
Détails du profil
Informations personnelles :
Nom : Homme Frédéric Bruyère
Âge : 29
Localisation : Belgique

Informations professionnelles :
Activité : Chef de projet NTIC
Secteur : Conseil

Informations forums :
Inscription : novembre 2008
Messages : 124
Points : 806
Points : 806
1) de rien

2) oui, tu peux imbriquer les try/catch

3) fondamentalement dans ce cas-ci ça ne change rien, vu que PDOException étend Exception, et qu'il n'y a, dans ce code là, aucun risque qu'un autre type d'exception soit lancé, mais c'est quand même préférable de façon générale de catcher l'Exception la plus "précise possible"
par exemple si plus tard tu modifie le code pour charger les parametres de connexion dans un autre fichier, et veux lancer un autre type d'exception en cas d'échec:
Code :
1
2
3
4
if (!$db_connexion_params) {
    throw new Exception('Echec du chargement des parametres');
}
$bdd = new PDO($db_connexion_param);
Si le chargement des données échoue, l'exception serait catchée par ton code actuel et tu aurais un message disant "Erreur de connexion au db", alors que le probleme serait ailleurs
en catchant immédiatement la PDOException, tu évites tout risque de problème ultérieur
__________________
"Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Martin Fowler)
Code62 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 15h47.


 
 
 
 
Partenaires

Hébergement Web