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

Zend_Db PHP Discussion :

Se connecter à deux bases en même temps [ZF 1.5]


Sujet :

Zend_Db PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 277
    Par défaut Se connecter à deux bases en même temps
    Bonjour à tous,

    j'aimerais savoir si ZF permet de se connecter facilement à deux bases en même temps. J'aimerais utiliser toutes les tables d'une base plus une table supplémentaire d'une autre base. Je sais que cela se fait "presque" simplement juste en php mais je n'arrive pas à savoir comment faire cela avec le ZF.

    [Base1]
    table 1
    table 2
    table 3

    [base2]
    table 21 (table à ajouter)
    table 22

    L'idéal serait de pouvoir se connecter aux deux bases et de gérer les tables "table 1","table 2", "table 3" et "table 21" comme si elle faisait partie de la même base. (je ferais en sorte que les noms de table soient différents dans les deux bases).

    Avez vous des astuces pour faire cela?

    Merci d'avance.

  2. #2
    Membre Expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Par défaut
    Bonjour,

    Se connecter à deux base de données est simple, il suffit de créer deux objets Zend_Db avec les paramètres de chacune de tes bases.

    Par contre, à ma connaissance, faire en sorte que les deux bases ne soient vues comme une seule, et faire des jointures entre les tables de tes deux bases comme si tu n'en manipulais qu'une me semble impossible avec Zend, comme avec php d'ailleurs (dans ce cas, c'est à toi de gérer les jointures, et tu ne le fais pas en SQL...).

    La seule solution que je vois pour faire ce que tu veux, c'est créer une connexion à la base 2 dans la base 1 (ou l'inverse). Et dans ces cas là, dans Zend, tu ne te connectes qu'à la base 1, et tu peux faire des requêtes à la fois dans ses tables et dans les tables de la base 2. mais cette solution n'a rien à voir avec le framework Zend, et dépend du système de gestion de bases de données utilisé...

  3. #3
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 277
    Par défaut
    Oki. J'avais commencé à faire des tests comme dans ta première réponse mais je ne suis pas arrivé à de résultats très concluant.

    Par contre, ta deuxième réponse m'intéresse beaucoup. Peux tu me donner un lien où une piste (j'utilise MySQL) ?

  4. #4
    Membre Expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Par défaut
    Malheureusement, n'étant pas un expert de MySQL, je ne peux pas te dire si ça existe, ni comment faire sous MySQL.

    Je connais juste l'équivalent chez oracle, qui s'appelle le dblink (et je crois que c'est pareil pour postgreSQL).

  5. #5
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Par défaut
    Salut

    Tu ne peux pas effectuer de requête en même temps sur 2 bases car aucun SGBD ne le permet, à ma connaissance du moins. Tu confonds sans doute avec la notion de "schéma" (Oracle, PostgreSQL).

    C'est malheureusement un concept que MySQL ne semble pas avoir dans sa version 5.1...

    [Edit] Tu devrais peut-être utiliser de la réplication ?

  6. #6
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 277
    Par défaut
    On peut le faire en procédant de cette manière

    Citation Envoyé par span_ar Voir le message
    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
    $cnx2 = mysql_connect($hote, base1, $pass)
                        or die(mysql_error());
                    $ret2 = mysql_select_db(base1)
                        or die(mysql_error());
     
                    $cnx1 = mysql_connect($hote, base2, $pass)
                        or die(mysql_error());
                    $ret1 = mysql_select_db(base2)
                        or die(mysql_error());
     
                    $req = "SELECT t1.det_nom, t2.img_id, t2.img_thumb_nom, t3.imgth_id
                    FROM base1.detail t1, base2.image t2, base1.imageth t3
                    WHERE t1.det_classe = '".$context."'
                    and t2.img_nom = t1.det_nom
                    and t3.imgth_nom = t2.img_thumb_nom";
    J'avais fait le même test que span_ar et il est effectivement possible de faire des jointures entre différents tables de différentes bases.

    Il me reste à savoir comment faire la même chose sous ZF. J'ai l'impression que l'on ne peut pas créer plusieurs instances de connexions aux bases.

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 27/06/2011, 09h47
  2. Se connecter à plusieurs bases en même temps
    Par sihammaster dans le forum VB.NET
    Réponses: 6
    Dernier message: 12/04/2010, 20h33
  3. [MySQL] Se connecter à deux bases en même temps
    Par Jonathan.b dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 22/04/2008, 16h33
  4. [Débutant] Se connecter à 2 bases en même temps
    Par Prohte dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 28/02/2006, 18h20
  5. [MySQL] Se connecter à deux base de données en même temps ??
    Par leo13 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 20/01/2005, 10h36

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