[PHP] Probléme requéte SQL base de donée access [ODBC]

Bonjour,

Sur mon serveur Debian je dois via un site que je crée pourvoir communiquer avec une base de donnée access 97 (.mdb) qui se trouve sur un poste windows du réseau.

J’ai donc installer ODBC la librairie.
Cela me le marque quand je fait

J’arrive a communiquer avec cette base de donnée mais certaine requête SQL ne marche pas.
Je peut récupérer des données mais ses tous.

exemple:

ORDER BY ne marche pas, UPDATE non plus… et je suppose plein d’autre.

Comment puis-je fait pour que cela marche?
Que je ne soit pas obliger de repasser a windows… :blush:

Enfin voila j’ai vraiment besoin d’aide, ce projet dois être terminer très rapidement.

Merci d’avance
jerem3000

update peut être lié à un problème de droits
mais si le select passe il n’y a aps de raisons que order by bloque

donne un exemple de requete

Cela n’a rien à voir avec PHP ou ta Debian, si ton acces ODBC vers Access fonctionne, ce n’est plus qu’une histoire de droit, à noter que les SGDB interprètent SQL comme bon leur semble, pour supprimer un enregistrement avec Access tu dois utiliser “DELETE *” alors que cela provoque une erreur avec SQL-Server, pour sélectionner les dix premiers enregistrements tu utilises TOP 10 alors que c’est LIMIT 10 avec PostGreSQL … Tout ça pour dire que tu as peut-être une erreur de formulation SQL :wink:

Voici mon code :[code] <?php
$bd=“baseAccessExemple”; // identifiant dsn
$user=""; // login
$password=""; // password
$cnx = odbc_connect( $bd , $user, $password );
if( ! $cnx ) echo “Impossible de se connecter”;

$sql= “SELECT * FROM EnteteCdeClient where PieceTrans=0 order by Code”;
$requete = odbc_exec($cnx, $sql);
if (!$requete) Error_handler( $text_error_structure , $cnx );

while(odbc_fetch_array($requete))
{

echo ‘

’.odbc_result($requete,“Code”).’ ‘. odbc_result($requete,“Date”).’ ‘.odbc_result($requete,“CodeTiers”).’ ‘.odbc_result($requete,“PieceTrans”).’

’;
}
$sql= “UPDATE EnteteCdeClient SET COMMENTAIRE=‘ESSAI’ where Code=‘1001’”;
$requete = odbc_exec($cnx, $sql);
if( ! $cnx ) echo “Impossible de se connecter”;

?>[/code]

Aucune de mes deux requêtes ne fonctionne. Nous avons corrigé les droits au niveau des différents dossiers concernés. Nous avons également utilisé différentes syntaxes au niveau des requêtes.

Par contre, s’il existe une alternative à “ORDER BY”, nous sommes preneurs, ainsi qu’une alternative à ODBC.

Merci

Tu as un message d’erreur ?

Oui, pour le Order by, bous avons

Pour le UPDATE, pas de message d’erreur, il ne se passe simplement rien.

Grâce à google, j’ai vu qu’il y a peut-être un problème entre php5 et ODBC … Ils préconisent d’essayer avec OpenOffice et l’application Base de passer tes instructions SQL et normalement ça fonctionne … Si c’est le cas, ça vient bien de PHP et dans ce cas soit tu passes en PHP4 (si tu le trouves …) soit tu cherches un autre moyen …

Edit : forum.hardware.fr/hfr/Programmat … 3966_1.htm

Est-ce que ce code n’est pas mieux ?

<?php
$bd="baseAccessExemple"; // identifiant dsn
$user=""; // login
$password=""; // password
$cnx = odbc_connect( $bd , $user, $password );
if( ! $cnx ) echo "Impossible de se connecter";

$sql= "SELECT * FROM EnteteCdeClient where PieceTrans=0 order by Code";
$requete = odbc_exec($cnx, $sql);

if (odbc_next_result($requete)) while(odbc_fetch_array($requete))
{

echo '<p>'.odbc_result($requete,"Code").' '. odbc_result($requete,"Date").' '.odbc_result($requete,"CodeTiers").' '.odbc_result($requete,"PieceTrans").'</p>';
}
else Error_handler( $text_error_structure , $cnx );

$sql= "UPDATE EnteteCdeClient SET COMMENTAIRE='ESSAI' where Code='1001'";
$requete = odbc_exec($cnx, $sql);
if( ! $cnx ) echo "Impossible de se connecter";

?>

Ce code provoque une erreur.

Je ne comprend pas comment le faire passer les requéte SQL par open office, pouvez vous m’expliquer un peut plus?

Ce n’est pas le code qui va passer par OpenOffice c’est toi !! Dans la suite OpenOffice il y a un programme noté “Base” quand tu l’exécutes il te demande de spécifier ta base et dans le bas il y a une liste (en gérale positionné sur JDBC) tu choisis ODBC et tu renseignes OpenOffice sur ta base, ensuite tu auras une fenêtre dans laquelle tu pourras faire des requêtes, donc tester ta connexion.

Sinon dans l’exemple vire la ligne du else.

Bon donc je n’est pas d’erreur en enlevant la ligne.

Mais cela n’affiche rien.

Je vais essayer avec open office je vous tien au courant.

Je ne sais pas comment tu te connectes réellement à ta base ACCESS mais je viens de voir ça :

Bonjour,

Pour lier des tables Mysql vers Access il faut télécharger MyODBC (http://dev.mysql.com/downloads/connector/odbc/3.51.html)

Une fois télécharger, l'exécuter bien sur !

Ensuite aller dans le panneau de configuration
- choisir "Outils d'administration"
- choisir "Sources de données ODBC"
- Ajouter
- sélectionner " MySQL ODBC 3.51 Driver" et cliquer sur "terminer"
- choisir un nom perso à inscrire dans "Data Source Name"
- Server (Localhost en local - IP si distant)
- User (root en local)
- password
- choisir la base de données dans la liste déroulante

Avec Access
Ouvrir une nouvelle base vide
- ensuite fichier ... Données externes
- lier les tables
- Type de fichiers ... sélectionner "ODBC Database()"
- Sources de données machine ... choisir le nom que vous avez introduit dans "Data Source Name" et valider par "Ok"
- sélectionner les tablee à lier et valider par "ok"

Voilà c'est fait

Si tu arrives à faire ça, ensuite tu attaquera une base mySQL donc pas de problèmes ODBC/PHP