IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

[ADODB] Connexion à 2 bases de données


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 93
    Par défaut [ADODB] Connexion à 2 bases de données
    Bien bonjour,

    Voilà, je sais qu'il est possible de connecter deux(2) bases de données ensembles mais voilà est-ce la bonne façons de le faire pour que cela soit le plus simple et le plus performant!?

    Ma manière est bien simple, dans ma classe je déclare tout simplement 2 connexions et j'appelle les 2 ensuite dans un autre fichier quelconque...

    Fichier de config pour ma connexion: (les 2 connexions)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    $sgc_db_dbtype = 'mysql';
    $sgc_db_server = 'localhost';
    $sgc_db_username = 'USER';
    $sgc_db_password = '';
    $sgc_db_dbname = 'AAA';
     
    // 2e connexions
    $xrms_db_dbtype = 'mysql';
    $xrms_db_server = 'localhost';
    $xrms_db_username = 'USER';
    $xrms_db_password = '';
    $xrms_db_dbname = 'BBB';

    Une page qu'il l'apelle une ou les 2 connexions

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $con = &adonewconnection($sgc_db_dbtype);
    $con->connect($sgc_db_server, $sgc_db_username, $sgc_db_password, $sgc_db_dbname);
     
    $conx = &adonewconnection($xrms_db_dbtype);
    $conx->connect($xrms_db_server, $xrms_db_username, $xrms_db_password, $xrms_db_dbname);

    Donc ma question tourne autour de cela, lorsque je voudrai joindre 2 ID de 2 tables qui sont chacunes dans une bases de données différente, quel est la BONNE méthodes de l'écrire dans un SELECT ou autre?

    J'espère avoir été un minimum clair.

    Merci.

  2. #2
    Membre averti
    Inscrit en
    Janvier 2007
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 41
    Par défaut
    Si j'ai bien compris, tu veux faire uen jointure entre deux tables différentes, provenant de deux bd différentes. JE pense qu'il suffit de faire un SELECT dans la 1ére connexion, puis récupérer le resultat puis l'incruster dans le second SELECT.

    Exemple :

    $resultat = (SELECT ID from Table_BD1)

    $resultat2 = (SELECT * FROM Table_BD2 WHERE ID IN $resultat)

    Biensur, c'est une explication du genre algorithmique à toi d'ajouter les fonctions nécessaires pour le traitement des requêtes.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 93
    Par défaut
    Salut,

    Effectivement, je veux faire un lien de 2 tables différentes, provenant de 2 bd différente, c'est bien cette méthode là que je fesais avant, mais on m'a déjà critiqué sur ma méthode de lier 2 BD et bon puisque cetait des informaticiens qui n'ont pas l'esprit du partage et d'open source cela a faite qu'il me l'ont pseudo dit....

    Bref, si quelqu'un connais la méthode en tant que tel n'hésitez pas de me le dire pendant que je continue a rechercher!

    Merci

  4. #4
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 660
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 660
    Par défaut
    pour faire une requête dans plusieurs base, il te faut déjà un utilisateur MySQL qui a accès à ces différentes base (apparemment c'est le cas avec ton exemple et les bases "AAA" et "BBB")
    ensuite tu te connectes sans préciser de base. là je ne sais pas si c'est faisable avec ta bibliothèque mais c'est faisable avec les bibliothèque de base "mysql" et "mysqli" (je n'ai jamais testé avec PDO, à voir)
    et ensuite tu fais ce genre de requête :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT T1.idClient, T2.nomPays
    FROM AAA.Client AS T1
    INNER JOIN BBB.Pays AS T2
        ON T2.idPays = T1.idPays
    WHERE idClient = '3012';

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 93
    Par défaut
    pour faire une requête dans plusieurs base, il te faut déjà un utilisateur MySQL qui a accès à ces différentes base (apparemment c'est le cas avec ton exemple et les bases "AAA" et "BBB")
    ensuite tu te connectes sans préciser de base. là je ne sais pas si c'est faisable avec ta bibliothèque mais c'est faisable avec les bibliothèque de base "mysql" et "mysqli" (je n'ai jamais testé avec PDO, à voir)
    et ensuite tu fais ce genre de requête :
    Code SQL :

    SELECT T1.idClient, T2.nomPays FROM AAA.Client AS T1 INNER JOIN BBB.Pays AS T2 ON T2.idPays = T1.idPays WHERE idClient = '3012';
    Merci, j'aime bien le concept.

    serais t'il possible croyez-vous avec ce type d'architecture...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $con = &adonewconnection($sgc_db_dbtype);
    $con->connect($sgc_db_server, $sgc_db_username, $sgc_db_password, $sgc_db_dbname);
     
    $conx = &adonewconnection($xrms_db_dbtype);
    $conx->connect($xrms_db_server, $xrms_db_username, $xrms_db_password, $xrms_db_dbname);
    J'appelle mes 2 bd de cette manière dans mes pages et ensuite pour faire une requete simple je fais ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $sql = "SELECT * FROM personnel WHERE statut_id = 1";
    $rst = $con->execute($sql);
    while(!$rst->EOF)
    {
    	$nom = $rst->fields['nom'];
    	echo "Nom: ".$nom;
     
        $rst->movenext();
    }
    Mais la méthode dont tu me parles mathieu peut-elle s'appliquer encore?

    Merci,

    Thomas

  6. #6
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 660
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 660
    Par défaut
    je n'ai pas compris ta question, qu'est ce que tu cherches à faire ? montre nous ce que tu as déjà essayé même si ça ne fonctionne pas
    en ce qui concerne la connexion, je t'ai répondu dans mon 1er message

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 93
    Par défaut
    Salut,

    Voilà ce que je fais, mais qui est totalement mauvais au niveaux de ma 2e requetes. Ma question est tjrs la même, mais j'essaye plutot de faire un peu comme mathieu ma proposé de faire.

    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
    $conx = &adonewconnection($xrms_db_dbtype);
    $conx->connect($xrms_db_server, $xrms_db_username, $xrms_db_password, $xrms_db_dbname);
     
    $sql = "SELECT * FROM opportunities";
     
    $tbl = con->execute($sql);
     
    $con = &adonewconnection($sgc_db_dbtype);
    $con->connect($sgc_db_server, $sgc_db_username, $sgc_db_password, $sgc_db_dbname);
     
    $sql0 = "SELECT numero_iso, description, T1.opportunity_description " .
    								"FROM $tbl.opportunities AS T1
    								INNER JOIN mandat AS T2
        							ON T2.numero_iso = T1.numero_iso ";
     
    						$rst = $con->execute($sql0);
     
    						while(!$rst->EOF)
    						{	
    							echo "<br />Description: ".$rst->fields['description'];
    							$rst->movenext();		
    						}

  8. #8
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 660
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 660
    Par défaut
    Citation Envoyé par mathieu
    tu te connectes sans préciser de base. là je ne sais pas si c'est faisable avec ta bibliothèque mais c'est faisable avec les bibliothèque de base "mysql" et "mysqli" (je n'ai jamais testé avec PDO, à voir)
    dans mon exemple il y a une seule connexion

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 93
    Par défaut
    Voila j'ai enfin trouvé.

    je devais mettre exactement le nom de la bd, je croyais pas que la requete pouvais fonctionner quand même. Merci à mathieu.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    $sql0 = "SELECT numero_iso, description, SA.company_name " .
    								"FROM mandats m LEFT JOIN $xrms_db_dbname.companies SA ON SA.company_id=m.client_id";
        						$con->debug=true; 	
    						$rst = $con->execute($sql0);
     
    						while(!$rst->EOF)
    						{	
    							echo "<br />Description: ".$rst->fields['description'];
    							$rst->movenext();		
    						}

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [VBA-E]Connexion ADODB a une base de données
    Par nemesys971 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 29/03/2006, 17h08
  2. ERREUR DE CONNEXION à une base de donnée ACCESS protégée
    Par unionriton dans le forum Bases de données
    Réponses: 4
    Dernier message: 09/05/2005, 09h35
  3. Delphi Connexion à une base de donnée distante par TCP/IP
    Par viecel dans le forum Bases de données
    Réponses: 1
    Dernier message: 12/01/2005, 19h19
  4. Echec lors de la connexion à la base de données.
    Par mclown dans le forum PostgreSQL
    Réponses: 8
    Dernier message: 26/10/2004, 23h36
  5. Réponses: 3
    Dernier message: 29/03/2004, 18h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo