[Resolu] Php + plusieurs bases Access

Php + plusieurs bases Access [Resolu] - PHP - Programmation

Marsh Posté le 05-12-2007 à 10:19:19    

Bonjour à tous et à toutes,  
me voila revenu pour vous embetter un petit peu ..
 
Voila mon soucis,  
en fait je travail sous php, jusqu'ici ça va.
Maintenant je dois travailler sur 5 bases Access différentes (ah la déjà moins biens)
J'ai bien trouvé des tuto pour pouvoir ce connecter sur UNE seule base access, avec modification des .ini et tout..  
 
J'aimerais connaitre s'il est possible de parametrer les connexions aux bdd access sans avoir à modifier les fichiers .ini directement dans mon script php, j'ai lu que c'était possible, mais aucun forum ou aucune recherche que j'ai effectué ne m'a aidé sur ce point ...  
 
Donc je me tourne vers vous en espérant que vous saurez m'aider..
 
Merci d'avance pour tout :)  
 [:magnasuprema]


Message édité par micfont999 le 17-12-2007 à 11:56:16

---------------
> http://graphicriver.net/user/micfo [...] micfont999  
Reply

Marsh Posté le 05-12-2007 à 10:19:19   

Reply

Marsh Posté le 05-12-2007 à 10:37:02    

ADO permet de définir un dsn directement dans PHP, l'odbc doit pouvoir le faire via les connection strings. A la limite, tu peux même carrément passer par une couche d'abstraction style adodb qui gère ça sans dsn prédéfinit dans windows

Reply

Marsh Posté le 05-12-2007 à 11:01:26    

merci pour ta réponse ^^  
je vais essayer de me pencher vers ça, je te tiens au courant ^^
 
merci beaucoup

Reply

Marsh Posté le 14-12-2007 à 14:01:21    

Bonjour,  
petite mise à jour du topic, j'ai un soucis au niveau de la fonction odbc_pconnect()
je ne comprend pas pourquoi mon erreur est présente, je croyais qu'avec odbc il n'y avait aucun paramètre à modifier. Hors j'ai tout essayer, rien ne fonctionne :  
Warning: odbc_pconnect() [function.odbc-pconnect]: SQL error: [Microsoft][Gestionnaire de pilotes ODBC] Source de données introuvable et nom de pilote non spécifié, SQL state IM002 in SQLConnect in D:\Realisations\Internet\wamp\www\testbaseaccess\adodb\drivers\adodb-odbc.inc.php on line 81
[Microsoft][Gestionnaire de pilotes ODBC] Source de données introuvable et nom de pilote non spécifié
Fatal error: Call to a member function Close() on a non-object in D:\Realisations\Internet\wamp\www\testbaseaccess\index.php on line 14
 
voici mes erreur, je ne sais pas si quelqu'un arrivera à me trouver une solution...  
En vous remerciant d'avance.


Message édité par micfont999 le 14-12-2007 à 15:16:55
Reply

Marsh Posté le 14-12-2007 à 16:48:30    

Comme d'habitude sur ce forum (et ailleurs :D), on ne peut rien faire sans le code qui a provoqué l'erreur...

Reply

Marsh Posté le 14-12-2007 à 17:35:02    

Bonsoir
bah le soucis c'est que c'est le code adodb comme tu à pu le voir et qu'il y à environ 50 pages de code.. Donc c'est assez difficile de le donner ...  :whistle:

Reply

Marsh Posté le 14-12-2007 à 18:24:31    

Non mais tu fais une connexion, donc il y a au moins un ADONewConnection dans ton code propre, c'est lui et son dsn que j'aimerais voir ;)

 

En fait, il y a deux méthodes pour se connecter via odbc avec ADOdb, soit avec les dsn de Windows (qu'il faut donc créer préalablement) soit avec un dsn "artificiel" à créer dans le code php et à utiliser dans le ->Connect de l'objet ADONewConnection.


Message édité par naceroth le 14-12-2007 à 18:35:46
Reply

Marsh Posté le 14-12-2007 à 18:38:12    

ah d'accord :)  
 
j'ai repris le tuto en français disponible un peu partout
http://phplens.com/phpeverywhere/adodb_french
 

Code :
  1. <?
  2. include('adodb.inc.php');       # charge le code deADOdb
  3. $conn = &ADONewConnection('access');    # crée une connexion
  4. $conn->PConnect('mabaseaccess');   # se connecte à MS-Access, mabaseaccess DSN
  5. $recordSet = &$conn->Execute('select * from matable');
  6. if (!$recordSet)
  7. print $conn->ErrorMsg();
  8. else
  9. while (!$recordSet->EOF) {
  10. print $recordSet->fields[0].' '.$recordSet->fields[1].'<BR>';
  11. $recordSet->MoveNext();
  12. }
  13. $recordSet->Close(); # optionnel $conn->Close(); # optionnel ?>


 
voila le code, je n'es rien changé sauf le nom de la base et de la table :)
 
Sachant donc que ma base s'appelle mabaseaccess
 
merci en tout cas pour ton aide


Message édité par micfont999 le 14-12-2007 à 18:39:40
Reply

Marsh Posté le 14-12-2007 à 18:54:14    

Donc là tu utilises un dsn windows, qu'il faut créer dans les sources de données utilisateurs de windows (ça se trouve dans les outils d'administration -> administrateur odnc ou un truc du genre).
 
Solution n°2 :

Code :
  1. <?php
  2. include('adodb5/adodb.inc.php');
  3. $dsn = "Driver={Microsoft Access Driver (*.mdb)};Dbq=c:\\db1.mdb;Uid=Admin;Pwd=;";
  4. $db = ADONewConnection('access');
  5. $db->connect($dsn);
  6. ?>


 
Code ultrabasique avec la définition d'un dsn directement dans le code php :)

Reply

Marsh Posté le 14-12-2007 à 19:06:56    

héhé , j'essai ça tout de suite après manger, je ne pourrais pas acceder aux sources sur mon hebergement donc ta petite solution ultrabasique me parait etre quelque chose d'ultra pratique et ou je vais te dire ultra merci. :)
je te tiens au courant dans une petite heure :)  
merci encore.

Reply

Marsh Posté le 14-12-2007 à 19:06:56   

Reply

Marsh Posté le 14-12-2007 à 21:54:35    

Kikou
alors j'ai encore pas mal d'erreur, mais il y à du progrès.
J'ai une question, est ce que le chemin absolu est utile? parce que j'ai essayé en relatif mais il m'a marqué fichier introuvable.
Avec un chemin absolu il me change le message d'erreur en me disant Nom de fichier incorrect.  
Je ne sais pas trop pourquoi sachant que le fichier est tout à fait correct mais bon ça je pense que ça peut s'arranger je sais pas trop comment.  
le Dbq = c'est bien la base à ouvrir c'est ça?  
 
en tout cas merci pour tout

Reply

Marsh Posté le 15-12-2007 à 01:58:18    

Mmmhh, ça se complique, pour ce que j'en sais, oui le chemin absolu est nécessaire (jamais vu ni tenter de connecter php et l'odbc en relatif), va peut-être falloir bidouiller à partir du $_SERVER['DOCUMENT_ROOT'] pour créer le chemin absolu si tu ne le connais pas à priori.

Reply

Marsh Posté le 15-12-2007 à 09:18:55    

ah la la la la, je fais t'en foutre moi des bases de données access ...  
Bon bah je vais essayer de bidouiller tout ça, je te remercie beaucoup pour ton aide, c'est vraiment gentil.

Reply

Marsh Posté le 17-12-2007 à 11:01:39    

Alors voila
pour tous les gens que ça peu aider, voila mon script  
 

Code :
  1. include("adodb/adodb.inc.php" );
  2. // ***************************************************************************************************************************  
  3. // *************************************** Mise en place de la connexion *****************************************************  
  4. // ***************************************************************************************************************************  
  5. // on récupère le chemin absolu du répertoire courant
  6. $repertoire = getcwd();
  7. // on change le chemin si l'on est sous windows
  8. if (ereg("Win", getenv("HTTP_USER_AGENT" )))
  9. {
  10. $repertoire = str_replace(":/", ":\\\\", $repertoire);
  11. $repertoire = str_replace("/", "\\", $repertoire);
  12. $repertoire .= "\\"; // on rajoute à la fin
  13. }
  14. else
  15. {
  16. $repertoire .= "/"; // on rajoute à la fin
  17. }
  18. // creation du dsn
  19. $dsn = "Driver={Microsoft Access Driver (*.mdb)};Dbq=".$repertoire."m9infov2.mdb;Uid=Admin;Pwd=;";
  20. $conn = &ADONewConnection('access');    # crée une connexion
  21. $conn->connect($dsn);


 
Le seul point à revoir et sur lequel j'aimerais avoir votre avis c'est le test du système d'exploitation du serveur. Pour le moment je test je client mais moi c'est le chemin sur le serveur qui m'interesserais.  
J'aimerais donc savoir comment connaitre l'OS du serveur, s'il existe un moyen parce que je n'ai trouvé que pour le client.
 
En vous remerciant :)


Message édité par micfont999 le 17-12-2007 à 11:02:52
Reply

Marsh Posté le 17-12-2007 à 11:13:19    

Dans les variables d'environnement, me semble que $SERVER_SOFTWARE retourne l'os de la machine en même temps que le type de serveur et sa version sous une forme style Apache/x.xx (Unix) PHP/w.ww.

 

A vérifier dans un phpinfo :)

 

Par contre, comme tu parlais d'Access dès le début j'ai toujours supposé que tu destinais ton script à un serveur windows, l'odbc sous Linux, même si c'est possible (myodbc doit encore bouger un peu), ça doit pas être courant en hébergement.

Message cité 1 fois
Message édité par naceroth le 17-12-2007 à 11:21:11
Reply

Marsh Posté le 17-12-2007 à 11:22:57    

Effectivement c'est bien ça ..  
J'avais mal regardé dans les variables d'environnement.
 
Décidément tu m'a bien aidé, je t'en remercie infiniement. :)  
 
Je crois que je peux mettre résolu enfin à cette misère..  
Merci encore pour tout.

Reply

Marsh Posté le 17-12-2007 à 11:27:10    

naceroth a écrit :


Par contre, comme tu parlais d'Access dès le début j'ai toujours supposé que tu destinais ton script à un serveur windows, l'odbc sous Linux, même si c'est possible (myodbc doit encore bouger un peu), ça doit pas être courant en hébergement.


 
Ce qui veux dire qu'ils n'auront pas mis en place les drivers et tout le tointoin ??  
 
Je ne sais pas encore à quel type d'hebergement je me destine vu que ça sera surement un hebergement interne à l'entreprise, et qu'ils savent pas trop, c'est une grosse boite, il y à des hebergements à droite à gauche pour tout leur intranet, extranet, internet, machin chose, et donc ils m'ont dis , tu te démerde. Lol donc pour le moment j'essai déjà de faire fonctionner mon appli en local sous vista avec wamp, sans changer quoi que ce soit dans les config php et autre..
 
 
Après si ça ne fonctionne pas au niveau hebergement, bah je verrais bien ..  
Tu crois que c'est susceptible de pas fonctionner?  

Reply

Marsh Posté le 17-12-2007 à 11:52:52    

Ca va dépendre de la machine qui va héberger la base de donnée en fait.  
 
Si elle est sous Windows (et je vois pas qui ayant un minimum de bon sens irait foutre une base access inutilisable sous Linux), tu auras des solutions (y compris lier ta base Access sous Win avec une base Mysql sous Linux, ça plombe un peu les perfs mais c'est un compromis).
 
Par contre, les deux sous Linux là oui, ça risque d'être un problème.

Reply

Marsh Posté le 17-12-2007 à 11:55:58    

erf ...  
Bon bah je continu de dev comme ça et puis s'il ne sont pas content ils installeront ce qu'il va bien. Je leur ai dis que je préférais créer un script qui exporte du access en mysql, ils m'ont dis qu'ils voulaient rester sur access absolument, donc bon, je dev sous access et s'il y à un soucis je gererais ça avec eux.
 
Tout ce que je voulais c'est que ça fonctionne en local .. :) C'est chose faite grace à toi, merci beaucoup :)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed