#26 Le 16/11/2007, à 10:37
- kader
Re : Lire une base Microsoft Access (.mdb) en PHP avec ODBC
Merci pour vos reponse...
Mais le probleme est qu'avant de faire les requete sous php il faut d'abord reussir a se connecter a la base...C'est cela qui m'embete.
Il me reste plus qu'a passer par un script qui n'est pas une mince affaire....
Hors ligne
#27 Le 16/11/2007, à 10:40
- kader
Re : Lire une base Microsoft Access (.mdb) en PHP avec ODBC
@jike
Je voulais savoir : Sur ton premier message tu disais que tu avais reussis a te connecter a la base access...Ou j'ai mal compris???????????
Hors ligne
#28 Le 16/11/2007, à 14:53
- Jike
Re : Lire une base Microsoft Access (.mdb) en PHP avec ODBC
@Kader :
Oui, je me suis connecté sans problèmes. C'est l'exécution des requêtes qui pose problèmes quand elle sont trop complexes.
mdbtools permet de faire quelques manips simples sur les bases Access pour, par exemple, extraire une table vers une base MySQL. Ca se fait avec le driver libmdbodbc.
Mais dès qu'on demande plus (Requêtes sur plusieurs tables avec jointures), ça plante.
Pour l'accès à une base par ODBC, regarde le message #15 pour le script et le #1 pour paramétrer le DSN.
Essaye, pour commencer, une requête simple genre SELECT * FROM table.
Le DSN est paramétré dans le fichier /etc/odbc.ini, le driver étant paramétré dans le fichier /etc/odbcinst.ini
Dernière modification par Jike (Le 16/11/2007, à 14:57)
Hors ligne
#29 Le 16/11/2007, à 15:38
- compte supprimé
Re : Lire une base Microsoft Access (.mdb) en PHP avec ODBC
Je crois que Kader a loupé une étape (c'est vrai que ce n'est pas toujours très clair au début de savoir qui est censé faire quoi).
1 Le driver est paramétré dans le fichier /etc/odbcinst.ini
Pour voir ce qu'il faut faire là , cf le mode d'emploi du driver. Ce sont les réglages de base du driver, à faire à l'installation.
2 Le DSN est paramétré dans le fichier /etc/odbc.ini
Le DSN, c'est en quelque sorte la règle de connexion, o๠l'on définit à quoi (base de donnée) et comment le driver doit se connecter. Il y a donc autant de DSN que de bases à utiliser.
Avec ça, la connexion à Access via odbc devient possible et transparente.
Et maintenant, il s'agit de l'utiliser, par exemple dans une routine php. Je n'ai pas la syntaxe exacte sous les yeux, mais c'est une une procédure du genre :
1 odbc_connect($DSN, $password...);
pour activer le driver et le connecter à la base indiquée dans le DSN
2 $resultat = odbc_query ($qry);
pour envoyer une requête à la base connectée et récupérer le résultat (s'il y a lieu)
3 odbc_close();
pour fermer la connexion.
Bien entendu, on peut aussi se connecter "à la main", à la place de php, avec un outil approprié genre mdbtools, et bidouiller directement dans la base appelée par le DSN. (comme on fait avec phpMyAdmin et MySQL, ou même directement en console avec la commande mysql -u user - p password). Mais c'est simplement une autre façon de faire.
Dans le cas de php, il n'y a rien à connecter "avant" ! C'est la fonction odbc_connect (un truc de ce genre) qui s'en charge, lorsque la page php est traitée par Apache.
J'espère que je ne suis pas trop à cà´té et que je n'enfonce pas des portes ouvertes.
A+
Dernière modification par faustus (Le 16/11/2007, à 15:43)
#30 Le 16/11/2007, à 16:57
- kader
Re : Lire une base Microsoft Access (.mdb) en PHP avec ODBC
Non mais cela j'avais bien compris...J'ai du mal m'exprimer lors de mon premier message.(cf #16)
J'ai bien configurer les deux fichiers:
j'arrive bien a me connecter avec isql mais lorsque je veux le faire a partir de php en faisant un odbc_connect(...),je n'y arrive pas!!!!!!!!!!
Hors ligne
#31 Le 16/11/2007, à 17:16
- compte supprimé
Re : Lire une base Microsoft Access (.mdb) en PHP avec ODBC
Que répond apache ? Il doit bien y avoir un message d'erreur quelque part.
Regarde dans les logs d'apache. Et/ou ajoute une ligne dans ton script php pour lui faire afficher l'erreur, du genre :
$err = odbc_error();
if ($err != '') {
echo "erreur : ".odbc_errno()." : ".$err;
}
juste après la ligne odbc_connect
Je n'ai pas la bibliothèque odbc de php sous les yeux. La syntaxe est donc à vérifier.
Et d'autre part active l'affichage de toutes les erreurs dans php.ini s'il ne l'est pas (c'est toujours bon en phase de développement d'avoir même le moindre "notice").
A+
#32 Le 16/11/2007, à 18:06
- kader
Re : Lire une base Microsoft Access (.mdb) en PHP avec ODBC
Voila ce que j'ai fait : un truc simple et la reponse tu la connais...
<?
$Connection=odbc_connect("Access","root","") or die ("impossible");
?>
Hors ligne
#33 Le 20/11/2007, à 14:12
- Jike
Re : Lire une base Microsoft Access (.mdb) en PHP avec ODBC
Je ne sais pas mais pas je ne crois pas que ca vienne de là.
Je pense que le pilote libmdbodbc n'est pas prévu pour faire des requêtes complexe mais seulement des requêtes simples dans la limite des fonctionnalités d'odbctools.
Neanmoins, il existe des pilotes plus complets sous Linux et aussi des ponts ODBC (Je crois que ca consite à utiliser une machine Windows pour hegerber la base Access et utiliser l'ODBC sur la machine Linux de facon transparente) mais, bien sur, ils sont payants.
Ca démontre quand même qu'il y a un certain besoin pour faire de l'ODBC Access sous Unix/Linux.
Donc, à moins de reprendre la suite du projet odbctool/libmdbodbc qui semble à l'abandon, je ne vois pas de solution.
On est je ne sais pas combien de milliards sur la planète mais pas un seul pilote ODBC Access pour Linux.
C'est con... non ?
Hors ligne
#34 Le 20/11/2007, à 14:31
- compte supprimé
Re : Lire une base Microsoft Access (.mdb) en PHP avec ODBC
Neanmoins, il existe des pilotes plus complets sous Linux et aussi des ponts ODBC (Je crois que ca consite à utiliser une machine Windows pour hegerber la base Access et utiliser l'ODBC sur la machine Linux de facon transparente) mais, bien sur, ils sont payants.
Assez tordu, ça, je trouve. Parce que c'est vraiment empiler tous les problèmes possibles ! Autant retourner directement sous win.
En fait, s'il n'y a pas de trucs trop compliqués dans access (je pense à des formulaires ou des états hyper complexes) pourquoi ne pas tenter une migration vers apache/mysql/php ? à‡a pourrait le faire aussi... Et du coup c'est même portable sur à peu près tous les OS connus...
A+
#35 Le 20/11/2007, à 18:38
- Jike
Re : Lire une base Microsoft Access (.mdb) en PHP avec ODBC
Non, car le but de la manip est de d'accèder à une base Access sous Linux.
Bien sur que Php c'est bien, il ne faut d'ailleurs que quelque minutes pour transférer une base Access vers un serveur MySQL (Avec Access lui même connecté en ODBC sur une base vide, on fait une exportation et tout se met en place).
Pour ce qui est des formulaires et autres, c'est pas la question. C'est juste le coté 'Base de données' qui est utilisé. De plus, on atteint vite les limites des formulaires et autres VBA dans Access.
Hors ligne
#36 Le 20/11/2007, à 19:38
- compte supprimé
Re : Lire une base Microsoft Access (.mdb) en PHP avec ODBC
Mais alors, c'est juste pour le fun ?
Enfin tu n'es pas obligé de répondre...
#37 Le 21/11/2007, à 09:40
- Jike
Re : Lire une base Microsoft Access (.mdb) en PHP avec ODBC
Pour le fun et aussi pour faire avancer le shmilblik
Et parceque voir le premier message du post !
Ca fait partie aussi des choses qui peuvent bloquer pour le passage des serveurs sous Linux comme MS Money ou Messenger peuvent bloquer pour le passage sous Linux des machines de Bureau (Pas de troll SVP).
Hors ligne
#38 Le 21/11/2007, à 19:37
- compte supprimé
Re : Lire une base Microsoft Access (.mdb) en PHP avec ODBC
Bon, j'essayerais peut-être les tulipes avant noà«l...
#39 Le 21/11/2007, à 22:24
- Jike
Re : Lire une base Microsoft Access (.mdb) en PHP avec ODBC
Et un de plus sur le coup !
Merci pour ton aide.
Hors ligne
#40 Le 22/11/2007, à 00:19
- compte supprimé
Re : Lire une base Microsoft Access (.mdb) en PHP avec ODBC
Pourquoi ?
Il y en a beaucoup ?
Et pour l'aide, il faut voir... à‡a commence mal. Avec mandriva 2008 (je tourne avec ça en ce moment), les répertoires /odbc n'existent pas... Il faut déjà que je trouve o๠ça se passe...
"php5-odbc, le driver libmdbodbc et les utilitaires de unixodbc-bin"
Chez moi, il y a :
php-odbc
libmdbtools1
et pas de unixodbc-bin
Je vais peut-être installer tout ce qui évoque odbc ? Mais je n'aime pas faire ça, parce qu'on ne saura jamais pourquoi ça marche chez moi (si ça marche un jour) et ce qui manque chez ceux chez qui ça ne marche pas...
Les tulipes commencent déjà à germer...:cool:
Du coup, noà«l, c'est moins sûr, parce que s'il faut déjà que je commence à chercher le matos... et lequel ?
Dernière modification par faustus (Le 22/11/2007, à 00:36)
#41 Le 22/11/2007, à 00:35
- Jike
Re : Lire une base Microsoft Access (.mdb) en PHP avec ODBC
Ben... les quelques uns qui ont écrit dans ce post
C'est pas lourd mais bon...
Tiens nous au courant de tes recherches...
Hors ligne
#42 Le 22/11/2007, à 02:20
- compte supprimé
Re : Lire une base Microsoft Access (.mdb) en PHP avec ODBC
C'est mal barré... Je voulais passer sous kubuntu, histoire qu'on ait au moins la même chose au départ...
Mais :
Encore un de ces gags qui empoisonnent la vie et qui commencent à me gonfler sérieusement...
Comme je l'ai dit, j'ai installé mandriva pour tester.
J'ai adapté menu.lst pour booter là -dessus, sur kubuntu et aussi sur win (pour le boulot, parce que pour ça, je ne suis toujours pas passé sous linux pour des tas de raisons).
Mise à jour de mandriva, menu.lst écrasé, et plus moyen de démarrer kubuntu, malgré le rétablissement du menu.lst. à‡a bloque sur la fenêtre d'accueil, dès qu'elle apparaà®t... Va encore falloir chercher et bidouiller... sur des trucs absolument sans intérêt, mais malheureusement incontournables.
En outre, obligation de démarrer mandriva 2 fois après passage sur un autre OS (c'était déjà le cas avant la mise à jour), parce qu'à la première fois kde-window-decorator error, ce qui se traduit par l'absence de barres de titre aux fenêtres...
C'est très très chiant, tout ça, à la longue... Parce qu'on n'a même pas l'occasion de passer enfin à quelque chose de sérieux ou au moins d'intéressant...
A+
#43 Le 22/11/2007, à 03:58
- compte supprimé
Re : Lire une base Microsoft Access (.mdb) en PHP avec ODBC
à‡a y est, problème de boot réglé.
Le grub de mandriva ne supporte pas l'option root=uuid=xxx pour le noyau. Il faut lui donner ça sous la forme root=/dev/partition
Encore un truc qui tombe sous le sens.
Un enfant de 5 ans comprendrait ça, qu'on m'amène un enfant de 5 ans, parce que je n'y comprends rien du tout...
Groucho Marx - La soupe aux canards.
Je persiste et je signe : très très chiant, ce genre de trucs, assez régulièrement !
A+
#44 Le 23/11/2007, à 14:08
- kader
Re : Lire une base Microsoft Access (.mdb) en PHP avec ODBC
Salut les gassssss...De retour pour vous dire que :
j'ai abandonné odbc et je suis passe par un script pour recuperer ma base...Quand je dis abandonner je veux dire,mis de cote le temps de trouver cette conne de solution,parce que c'est pas trop bo ce que j'ai fait...Mais bon!!!
Peut etre qu'un jour je pourrais me connecter a une base access qui c'est???
je vous suis,on ne sait jamais si vous avez une bonne idee???
A+
Hors ligne
#45 Le 10/12/2007, à 17:55
- compte supprimé
Re : Lire une base Microsoft Access (.mdb) en PHP avec ODBC
Bonjour,
Je viens d'essayer. Apparemment ça marche.
Librairies installées (kubuntu 7.10)
libmdbodbc
odbcinst1debian1
php5-odbc
unixodbc
/etc/odbcinst.ini
[MicrosoftAccessODBC] // un nom pour le driver ODBC
Description = Microsoft Access Driver ODBC
Driver = /usr/lib/libmdbodbc.so.0
Setup = /usr/lib/libmdbodbc.so.0
/etc/odbc.ini
[access_dsn] // un nom de Data Source Name
Description = access database
Driver = MicrosoftAccessODBC // le nom du driver défini dans /etc/odbcinst.ini
Database = database.mdb // la base de donnée à contacter
access.php
<?php
$lnk = odbc_connect('access_dsn', '', ''); // pas d'user ni de password, si la bd access n'en a pas
$qry = "select * from table";
$res = odbc_exec($lnk, $qry);
...
?>
A+
Dernière modification par faustus (Le 10/12/2007, à 18:05)
#46 Le 10/12/2007, à 18:58
- compte supprimé
Re : Lire une base Microsoft Access (.mdb) en PHP avec ODBC
J'ai parlé un peu vite...
Les requêtes un peu élaborées font pousser les tulipes...
#47 Le 12/06/2009, à 14:25
- UnNeurone
Re : Lire une base Microsoft Access (.mdb) en PHP avec ODBC
Bonjour à tous,
Je suis sur un projet d'interface pour une base Access, et Ô joie, je suis tombée sur votre site alors que ça faisait depuis ce matin que je galérai pour faire fonctionner ma base Access sous Ubuntu ! Oui, dans ma boîte, ça fait deux semaines que je suis arrivée mais je n'ai toujours pas d'IDE installé sur ma machine Windows et suis obligée d'utiliser mon laptop Ubuntu sans le réseau, ce qui cause des problèmes évidents de compatiblilité... Heureusement que la base n'est pas sur le réseau !
J'ai bien noté tous les conseils de cette page, et merci à tous d'avoir fait avancer mon shmil-blick (je ne sais pas comment ça s'écrit...) !
A bientôt peut-être pour un éventuel problème, même si bien sur, ce n'est pas que je ne vous aprécie pas, mais j'espère que non
Ciao
Neurone
#48 Le 14/06/2009, à 21:19
- Jike
Re : Lire une base Microsoft Access (.mdb) en PHP avec ODBC
Je garde un œil sur ce post que j'ai ouvert mais... rien de neuf depuis le temps.
Bonne continuation !
Hors ligne