Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1251 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  [Resolu] Php + plusieurs bases Access

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Resolu] Php + plusieurs bases Access

n°1653100
micfont999
Simplement Moi
Posté le 05-12-2007 à 10:19:19  profilanswer
 

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  
mood
Publicité
Posté le 05-12-2007 à 10:19:19  profilanswer
 

n°1653113
naceroth
Posté le 05-12-2007 à 10:37:02  profilanswer
 

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

n°1653138
micfont999
Simplement Moi
Posté le 05-12-2007 à 11:01:26  profilanswer
 

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

n°1658308
micfont999
Simplement Moi
Posté le 14-12-2007 à 14:01:21  profilanswer
 

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
n°1658460
naceroth
Posté le 14-12-2007 à 16:48:30  profilanswer
 

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

n°1658489
micfont999
Simplement Moi
Posté le 14-12-2007 à 17:35:02  profilanswer
 

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:

n°1658499
naceroth
Posté le 14-12-2007 à 18:24:31  profilanswer
 

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
n°1658507
micfont999
Simplement Moi
Posté le 14-12-2007 à 18:38:12  profilanswer
 

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
n°1658515
naceroth
Posté le 14-12-2007 à 18:54:14  profilanswer
 

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 :)

n°1658520
micfont999
Simplement Moi
Posté le 14-12-2007 à 19:06:56  profilanswer
 

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.

mood
Publicité
Posté le 14-12-2007 à 19:06:56  profilanswer
 

n°1658573
micfont999
Simplement Moi
Posté le 14-12-2007 à 21:54:35  profilanswer
 

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

n°1658607
naceroth
Posté le 15-12-2007 à 01:58:18  profilanswer
 

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.

n°1658615
micfont999
Simplement Moi
Posté le 15-12-2007 à 09:18:55  profilanswer
 

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.

n°1659233
micfont999
Simplement Moi
Posté le 17-12-2007 à 11:01:39  profilanswer
 

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
n°1659246
naceroth
Posté le 17-12-2007 à 11:13:19  profilanswer
 

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
n°1659251
micfont999
Simplement Moi
Posté le 17-12-2007 à 11:22:57  profilanswer
 

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.

n°1659254
micfont999
Simplement Moi
Posté le 17-12-2007 à 11:27:10  profilanswer
 

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?  

n°1659290
naceroth
Posté le 17-12-2007 à 11:52:52  profilanswer
 

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.

n°1659294
micfont999
Simplement Moi
Posté le 17-12-2007 à 11:55:58  profilanswer
 

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 :)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  [Resolu] Php + plusieurs bases Access

 

Sujets relatifs
trier après une requète (résolu)[Resolu] Condition pour changer une class
[Résolu] Une boucle dans une requête SQL?Boucles et performances [ résolu ]
[Résolu] [Java] method invoke avec List<generics>Macro à appliquer à plusieurs cellules
[Résolu][StringTokenizer - Urgent] Comment ça marche ?[Résolu] Chat: bdd ou fichier?
[Résolu] Je voudrais dupliquer des tables dans ma base MySQL[Résolu] Probleme boucle coloration
Plus de sujets relatifs à : [Resolu] Php + plusieurs bases Access


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR