Bonjour,
Je rencontre depuis quelques jours un problème (si celui-ci en ai un puisqu'il ne s'est pas encore présenté mais risque de l'être très rapidement) concernant la connexion d'un serveur A (site client) à une base de données Access sur un serveur B.
- Le langage de programmation utilisé pour se connecter à la BDD Access est PHP qui est interprété sur le serveur A.
- La bdd Access est présente sur le serveur B
Après plusieurs recherches sur le net, j'ai remarqué que je n'étais pas le premier (heureusement) à demander de l'aide dans la démarche à suivre.
Je me suis vite rendu compte que si certaines personnes avaient trouvé des réponses à leur problème, ils ne la partageaient pas par oubli surement ou par "Mon problème est résolu, merci mais pas la motivation de dire comment je l'ai résolu".
Bref l'un de mes clients met à ma disposition un certain nombres d'informations qui doivent me permettre de me connecter à leur bdd Access distante :
- Serveur A
- | - Le module sera déployé sur une plate-forme Apache / PHP 5 avec connexion odbc active
- Serveur B
- | - Nom de Domaine : "nom_de_domaine"
- | - Serveur win 2003 :
- | - | - Nom : "server_X"
- | - | - Adresse IP : "XXX.XXX.XXX.XXX"
- | - | - Port : "XXXX"
- | - | - Chemin d'accès bdd : \\server\xxxxx\xxxxx\fichier.mdb
- | - Login :
- | - | - user : "user"
- | - | - password : "password"
Mes recherches à travers le net et les forums (tutos / questions-réponses / etc.) m'ont permis de mieux comprendre comment se connecter à une base de données Access distante.
Cependant, je doute que cela puisse suffire pour se lancer tête baissé dans le développement du module php.
Donc je confectionne des briques de test avant de les rassemblé pour faire un tout.
Voici le code qui m'a permit de me connecter à une bdd access en local :
Ce code fonctionne et me permet de me connecter à une bdd access local ayant pour chemin d'accès "C:\fichier.mdb".
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 <?php $user = "root"; $pwd = ""; $dsn = "Driver={Microsoft Access Driver (*.mdb)};Dbq=C:\fichier.mdb"; $cnx = odbc_connect ($dsn, $user, $pwd) or die ('impossible de se connecter'); $query = "SELECT ..."; $process = odbc_exec ($cnx, $query); $row = odbc_fetch_array ($process); odbc_close($cnx); ?>
Cependant, c'est lorsque la BDD Access devra être accessible à distance que cela se complique.
J'ai quelques idées après recherches mais je souhaiterai avoir votre point de vue et me dire ce qui ne va pas dans le code ci-dessous. De plus, dites moi si les informations que j'ai à ma disposition sont suffisantes.
En gras le code PHP modifié (par rapport au code en local).
J'ai essayé d'être le plus clair possible, mais s'il vous manque des explications / renseignements, n'hésitez pas à me les demander .
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 <?php $user = "user"; $pwd = "password"; $serverIP = "XXX.XXX.XXX.XXX:XXXX"; // IP + Port $pathMDB = "\\server_X\xxxxx\xxxxx\fichier.mdb"; $dsn = "Driver={Microsoft Access Driver (*.mdb)};Server=$server;Dbq=$pathMDB ;Uid=$user;Pwd=$pwd;"; $cnx = odbc_connect ($dsn, $user, $pwd) or die ('impossible de se connecter'); $query = "SELECT ..."; $process = odbc_exec ($cnx, $query); $row = odbc_fetch_array ($process); odbc_close($cnx); ?>
Merci d'avance à tous ceux qui m'aideront.
Partager