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 :

Jointure sur tables de bases ACCESS distinctes [ODBC]


Sujet :

PHP & Base de données

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 6
    Points : 6
    Points
    6
    Par défaut Jointure sur tables de bases ACCESS distinctes
    Bonjour,

    Sous EasyPHP, je dois exécuter une jointure sur deux tables dans deux bases Access distinctes. Je ne peux ni modifier le chemin ni la conception de celles-ci car elles servent déjà à d'autres applications. J'ai essayé vainement plusieurs solutions mais aucune n'est la bonne. Je comprends où est le problème mais j'aurais besoin d'un avis éclairé car là, je sèche.

    Les connexions et requêtes sur chacune des tables séparément fonctionnent parfaitement.

    Premier essai dans lequel j'utilise un driver générique :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    $user = "";
    $password = "";
    $base1 = "C:\HP\APLONS.accdb";
    $base2 = "C:\HP\CP.accdb";
    $dsn1 = "Driver={Microsoft Access Driver (*.mdb, *.accdb)}; Dbq=$base1";
    $dsn2 = "Driver={Microsoft Access Driver (*.mdb, *.accdb)}; Dbq=$base2";
     
    $bdd1 = odbc_connect($dsn1, $user, $password) or die(odbc_errormsg());
    $bdd2 = odbc_connect($dsn2, $user, $password) or die(odbc_errormsg());
     
    $sql = "SELECT a.FirstName, a.SurName, a.Postal_Code, a.Town, a.Country, b.arrt FROM [APLONS.accdb].Clients a LEFT JOIN [CP.accdb].Table_CP b ON a.Postal_Code = b.cp WHERE a.Postal_Code <>'' ORDER BY a.FirstName";
     
    $req = odbc_exec($bdd1, $sql) or die (odbc_errormsg());
    J'obtiens ce message d'erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    [Microsoft][ODBC Microsoft Access Driver] Could not find file 'C:\PROGRA~2\EASYPH~1.1VC\binaries\apache\APLONS.accdb'.
    Deuxième essai dans lequel je crée les DSN avec localisation de leur base :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    $user = "";
    $password = "";
     
    $bdd1 = odbc_connect("HP1", $user, $password) or die(odbc_errormsg());
    $bdd2 = odbc_connect("HP2", $user, $password) or die(odbc_errormsg());
     
    $sql = "SELECT a.FirstName, a.SurName, a.Postal_Code, a.Town, a.Country, b.arrt FROM Clients a LEFT JOIN Table_CP b ON a.Postal_Code = b.cp WHERE a.Postal_Code <>'' ORDER BY a.FirstName";
    Et là, étant donné que ma requête ne se connecte qu'à la première base, j'obtiens logiquement ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    [Microsoft][ODBC Microsoft Access Driver] The Microsoft Office Access database engine cannot find the input table or query 'Table_CP'. Make sure it exists and that its name is spelled correctly.
    Je pense que la solution la meilleure serait de pouvoir indiquer à Apache le chemin des deux bases Access. Vu qu'elles sont dans le même dossier, d'après ce que j'ai pu lire, une seule connexion suffirait à condition d'indiquer le nom de la base dans la requête mais je ne sais pas comment modifier le fichier de configuration.

    Merci d'avance pour votre aide.

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Tu pourrais faire simplement une table liée depuis Access.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 6
    Points : 6
    Points
    6
    Par défaut
    En effet, c'est la solution la plus simple mais juste avant de mettre en "Résolu", j'aimerais savoir, par curiosité, si, pour vous, il existe une solution modifiant le fichier de config Apache qui permettrait de pointer sur le dossier contenant les bases Access.

    En tout cas, merci pour cette solution limpide qui me permet de débloquer mon projet.

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Il faut echapper tes \
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $base1 = "C:\\HP\\APLONS.accdb";
    Mais tu ne pourras de toute facon pas faire une jointure entre deux connexions.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 6
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par sabotage Voir le message
    Mais tu ne pourras de toute facon pas faire une jointure entre deux connexions.
    Merci pour cette réponse complémentaire.

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

Discussions similaires

  1. modifier type de champs dans table de base access 2000
    Par raoulv dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 12/03/2007, 14h22
  2. Réponses: 3
    Dernier message: 08/11/2006, 23h04
  3. [FB1.5]Vue avec jointure sur tables ?
    Par Sitting Bull dans le forum SQL
    Réponses: 2
    Dernier message: 07/12/2004, 17h07
  4. jointure sur table et procedure stocké
    Par pram dans le forum SQL
    Réponses: 3
    Dernier message: 18/11/2004, 21h56
  5. [debutant] select-insert sur tables de bases differentes
    Par RedMax dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 21/10/2004, 18h59

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