Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PDO
PDO Forum d'entraide sur PDO (PHP Data Objects) : pilote générique de bases de données avec PHP. Avant de poster -> FAQ PDO et Cours PDO
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 08/09/2011, 11h41   #1
Membre actif
 
Avatar de Emyleen
 
Femme Emeline Dabée
Webmaster
Inscription : mars 2010
Messages : 136
Détails du profil
Informations personnelles :
Nom : Femme Emeline Dabée
Âge : 26
Localisation : France, Aveyron (Midi Pyrénées)

Informations professionnelles :
Activité : Webmaster
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : mars 2010
Messages : 136
Points : 171
Points : 171
Par défaut Utiliser PDO avec Odbc en Local et MySql en distant

Bonjour,

J'ai un peu cherché, j'ai trouvé les syntaxes de connexion et tout pour utiliser PDO, mais je ne vois pas comment écrire dans mon code le fait que je veux que le site se connecte sur une base de données ODBC en local et par contre sur une base de données MySql à distance.

Dois-je faire 2 fichiers de classe de connexion? Mais alors comment faire la différence lors de l'appel?

Ou alors une autre solution?

Merci d'avance pour vos lumières
Emyleen est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/09/2011, 14h50   #2
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 991
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : février 2010
Messages : 2 991
Points : 5 032
Points : 5 032
Hello

Il faut juste que tu ouvres 2 connection avec PDO, soit deux instances distinctes: une pour ODBC et une pour MySQL.
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/10/2011, 16h57   #3
Membre actif
 
Avatar de Emyleen
 
Femme Emeline Dabée
Webmaster
Inscription : mars 2010
Messages : 136
Détails du profil
Informations personnelles :
Nom : Femme Emeline Dabée
Âge : 26
Localisation : France, Aveyron (Midi Pyrénées)

Informations professionnelles :
Activité : Webmaster
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : mars 2010
Messages : 136
Points : 171
Points : 171
Donc en fait je fais 2 __construct() dans ma classe connexion?

Je vois pas trop comment les différencier, je teste les connexion peut etre, s'il n'arrive pas a se connecter à l'une je le connecte à l'autre c'est ça?
Emyleen est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/10/2011, 17h44   #4
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 991
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : février 2010
Messages : 2 991
Points : 5 032
Points : 5 032
Citation:
Envoyé par Emyleen Voir le message
Donc en fait je fais 2 __construct() dans ma classe connexion?

Je vois pas trop comment les différencier, je teste les connexion peut etre, s'il n'arrive pas a se connecter à l'une je le connecte à l'autre c'est ça?
D'une pourquoi diable faire deux constructeurs et de deux c'est impossible en PHP...

Ce ne sont pas deux constructeurs qu'il faut faire mais deux instances:
Code :
1
2
$connection_mysql = new PDO(...);
$connection_odbc = new PDO(...);
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/10/2011, 10h17   #5
Membre actif
 
Avatar de Emyleen
 
Femme Emeline Dabée
Webmaster
Inscription : mars 2010
Messages : 136
Détails du profil
Informations personnelles :
Nom : Femme Emeline Dabée
Âge : 26
Localisation : France, Aveyron (Midi Pyrénées)

Informations professionnelles :
Activité : Webmaster
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : mars 2010
Messages : 136
Points : 171
Points : 171
Mais comment ça, 2 instances? Je ne vais pas rappeler le constructeur PDO à chaque fois en rentrant mes identifiants de connexion!

Moi je veux pouvoir faire juste :

Code :
1
2
3
$connexion = new Connexion;
$result = $connexion->query('ma requete');
return $result;
dans mes fonctions.
En sachant que Connexion est une classe PHP qui a un constructeur utilisant PDO et me retournant un objet connexion.

C'est pas possible ça? Je dois rentrer mes identifiants de connexion en clair à chaque fois? C'est un poil redondant non?
Emyleen est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/10/2011, 10h24   #6
Modérateur
 
Inscription : septembre 2010
Messages : 7 131
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 131
Points : 8 491
Points : 8 491
le pattern Factory est la pour toi :
http://php.net/manual/fr/language.oop5.patterns.php

sinon un Registry fera l'affaire
__________________
http://blog.stealth35.com/
stealth35 est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/10/2011, 10h37   #7
Membre actif
 
Avatar de Emyleen
 
Femme Emeline Dabée
Webmaster
Inscription : mars 2010
Messages : 136
Détails du profil
Informations personnelles :
Nom : Femme Emeline Dabée
Âge : 26
Localisation : France, Aveyron (Midi Pyrénées)

Informations professionnelles :
Activité : Webmaster
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : mars 2010
Messages : 136
Points : 171
Points : 171
Merci mais je ne comprend rien aux pattern et franchement j'ai pas le temps de m'y pencher dessus.

J'ai trouvé cette classe de Xavier Artot, je penses qu'elle fait exactement ce dont j'ai besoin.

Qu'en pensez-vous?
Emyleen est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/10/2011, 10h41   #8
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 991
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : février 2010
Messages : 2 991
Points : 5 032
Points : 5 032
Donc si je suis ton raisonnement, on pourrait croire que tu ouvre la connexion à chaque requête. Tu dois te servir de l'instance pour effectuer tes requêtes de cette manière:
Code :
1
2
3
4
5
6
7
8
$connection_mysql = new PDO(...);
$connection_odbc = new PDO(...);
 
$result_1 = $connection_odbc->query('odbc query 1');
$result_2 = $connection_mysql->query('mysql query 1');
 
$result_3 = $connection_odbc->query('odbc query 2');
$result_4 = $connection_mysql->query('mysql query 2');
Tu conserves une instance de chaque connexion tout au long du runtime, tu peux éventuellement t'aider d'un factory et d'un registry mais ce n'est pas vraiment nécessaire.
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/10/2011, 10h46   #9
Modérateur
 
Inscription : septembre 2010
Messages : 7 131
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 131
Points : 8 491
Points : 8 491
Citation:
Envoyé par Emyleen Voir le message
Merci mais je ne comprend rien aux pattern et franchement j'ai pas le temps de m'y pencher dessus.
comment ça pas le temps ?
__________________
http://blog.stealth35.com/
stealth35 est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/10/2011, 10h50   #10
Membre actif
 
Avatar de Emyleen
 
Femme Emeline Dabée
Webmaster
Inscription : mars 2010
Messages : 136
Détails du profil
Informations personnelles :
Nom : Femme Emeline Dabée
Âge : 26
Localisation : France, Aveyron (Midi Pyrénées)

Informations professionnelles :
Activité : Webmaster
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : mars 2010
Messages : 136
Points : 171
Points : 171
Je dois transvaser ma base de données de ODBC à MySQL d'ici mercredi prochain donc je n'ai pas le temps de comprendre les pattern. C'est trop compliqué pour moi, je voulait juste une classe PDO me permettant de me connecter à ODBC ou a MySQL le plus rapidement possible.

@Benjamin Delespierre : Merci je comprend mieux ce que tu voulais dire par instance Il faudrait juste que j'arrive à caser tout ça dans une classe pour pouvoir m'en resservir dans toutes mes autres classes d'objet.
Emyleen est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/10/2011, 10h53   #11
Modérateur
 
Inscription : septembre 2010
Messages : 7 131
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 131
Points : 8 491
Points : 8 491
Citation:
Envoyé par Emyleen Voir le message
Je dois transvaser ma base de données de ODBC à MySQL d'ici mercredi prochain donc je n'ai pas le temps de comprendre les pattern. C'est trop compliqué pour moi, je voulait juste une classe PDO me permettant de me connecter à ODBC ou a MySQL le plus rapidement possible.
si c'est trop compliquer pour toi c'est que y'a un problème d'orientation dans ton travail, quand c'est juste pour fun c'est tolérable, mais la venant d'un pro ....
__________________
http://blog.stealth35.com/
stealth35 est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/10/2011, 10h57   #12
Membre actif
 
Avatar de Emyleen
 
Femme Emeline Dabée
Webmaster
Inscription : mars 2010
Messages : 136
Détails du profil
Informations personnelles :
Nom : Femme Emeline Dabée
Âge : 26
Localisation : France, Aveyron (Midi Pyrénées)

Informations professionnelles :
Activité : Webmaster
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : mars 2010
Messages : 136
Points : 171
Points : 171
Bah moi je suis infographiste à la base, j'ai du m'adapter au marché et j'ai appris le PHP Objet et les concepts généraux de la POO en fonction des nécessités. Désolé de ne pas être une développeuse qui maitrise totalement le PHP objet.

Je commencerais les pattern quand j'aurai vraiment bien assimilé les bases de la POO, car déjà rien que d'utiliser une classe comme PDO j'ai du mal alors....
Emyleen est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/10/2011, 11h16   #13
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 991
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : février 2010
Messages : 2 991
Points : 5 032
Points : 5 032
Citation:
Envoyé par Emyleen Voir le message
Merci mais je ne comprend rien aux pattern et franchement j'ai pas le temps de m'y pencher dessus.

J'ai trouvé cette classe de Xavier Artot, je penses qu'elle fait exactement ce dont j'ai besoin.

Qu'en pensez-vous?
J'en pense que tout ce qu'on trouve sur PHPClasses c'est pourri, mais tu fais ce que tu veux.

En ce qui concerne cette classe:
1 - Cette classe n'apporte rien de concrêt par rapport à PDO
2 - Cette classe n'est pas portable !
3 - Cette classe ne supporte pas tous les moteurs de stockage (en MySQL par exemple seul InnoDB supporte les transactions)
4 - Une classe de connection qui envoie des mails, j'aurais tout vu !!!
5 - Cette classe prétends être une couche d'abstraction mais je ne vois rien de ce genre
6 - Une classe de connection en dépendance avec une classe de message (couche de présentation) j'aurais tout vu (encore) !!!

Avant d'utiliser à tord des classes aussi mal conçues, tu devrais te poser la question de ce que tu cherches à faire. Une application PHP ne saurait se résumer à un patchwork de bouts de codes récupérés par-ci par-là sur internet.
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/10/2011, 11h19   #14
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 991
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : février 2010
Messages : 2 991
Points : 5 032
Points : 5 032
Citation:
Envoyé par Emyleen Voir le message
@Benjamin Delespierre : Merci je comprend mieux ce que tu voulais dire par instance Il faudrait juste que j'arrive à caser tout ça dans une classe pour pouvoir m'en resservir dans toutes mes autres classes d'objet.
Ne te casse pas la tête avec une classe, tu as deux solutions plus simple:
- Mettre les deux instances de connexion en global
- Faire passer les instances aux classes qui en ont besoin (vu qu'en PHP les objets sont passés par référence, tu travaillera bien avec ces deux instances uniquement, il n'y aura pas de copie)
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre 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 19h55.


 
 
 
 
Partenaires

Hébergement Web