access en mode sql pur

Eléphant du PHP | 130 Messages

31 mars 2008, 10:02

Bonjour,

J'aimerai savoir pourquoi "%" n'est-il pas accepté par access 2000 en mode sql svp ?
On est obligé de mettre * pour que l'affichage des données se fassent !?
Il y a peut être quelque chose à modifier dans apache/config ?

Merci.
Le vent souffle où il veut et tu en entends le bruit,
Mais tu ne sais d'où il vient, ni où il va ...

ViPHP
ViPHP | 5924 Messages

31 mars 2008, 10:13

Dans apache ?
Euh, msaccess n'a rien à voir avec apache, access c'est une base de données microsoft…

Eléphant du PHP | 130 Messages

31 mars 2008, 10:53

D'après phpteam on peut se connecter à une base access :

http://www.phpteam.net//expert/simulati ... c-php.html

Il s'agit d'une base access, de mon côté qui va alimenté une autre base mssql par odbc pour afficher les infos.

Le problème c'est que dans le script php, la requète, par la méthode odbc , qui interroge access n'accepte pas le "%" pour afficher toutes les informations quand souhaite.
Access n'accepte pas le % mais * c'est ok.

Je pensai qu'il avait moyen d'activé quelque chose dans httpd.conf d'apache pour faire accepter les "*" dans les requètes destinées à access !?
Le vent souffle où il veut et tu en entends le bruit,
Mais tu ne sais d'où il vient, ni où il va ...

ViPHP
ViPHP | 5924 Messages

31 mars 2008, 11:27

Euh, la configuration de php ne se règle pas dans le httpd.conf…

Mammouth du PHP | 19672 Messages

31 mars 2008, 11:28

Non.

Chaque SGBD respecte plus ou moins les standards ANSI en matière de langage SQL, or Access comme d'autres a son propre dialecte SQL qui ne correspond par forcément aux standards. Donc si ça fonctionne avec "*", utilise "*" sans chercher à rendre MS-Access conforme aux standards, c'est une cause perdue en plus d'une perte de temps.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 130 Messages

31 mars 2008, 11:42

merci bien pour l'information.
ça confirme ce qu'on m'a dit à ce sujet.

Mais dans un script php, comment faire pour que "*" dans la requète soit accepter, si c'est possible ?

Sinon, y aurait-il une astuces pour contourner le problème ?
Le vent souffle où il veut et tu en entends le bruit,
Mais tu ne sais d'où il vient, ni où il va ...

Mammouth du PHP | 19672 Messages

31 mars 2008, 11:50

Comment envoies-tu donc ta requête à MS-Access ? Pour PHP, ta requête n'est qu'une chaine de caractères sans signification. Illustrer ce que tu fais avec un peu de code aiderait sans doute à repérer une éventuelle erreur :-k
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 130 Messages

31 mars 2008, 12:14

Ok, le voici :

Code : Tout sélectionner

$req_ligne="select p_lncustdlv.lncustdlvincde , p_lncustdlv.hdcustdlvincde , p_lncustdlv.lncustordincde , p_lncustord.objincde , p_lncustord.objdsc , p_lncustord.classincde , p_lncustdlv.dlvqty , p_lncustord.objexcde , p_lncustdlv.dctunithtprc from p_lncustdlv , p_lncustord , p_hdcustdlv where p_lncustdlv.lncustordincde=p_lncustord.lncustordincde and p_hdcustdlv.hdcustdlvincde=p_lncustdlv.hdcustdlvincde and p_lncustdlv.dctunithtprc <> 0 and p_lncustord.objexcde like '%[0-9]S' and p_lncustord.analyacctcde='F05' and year(p_hdcustdlv.hdcustdlvdte) >= $annee_maj and month(p_hdcustdlv.hdcustdlvdte) >= $mois_maj and day(p_hdcustdlv.hdcustdlvdte) >= $jour_maj ";
Le vent souffle où il veut et tu en entends le bruit,
Mais tu ne sais d'où il vient, ni où il va ...

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

31 mars 2008, 12:30

Alors histoire de remettre les choses au clair :
- Apache est un serveur web. Les navigateurs l'interrogent et il leur retourne des pages html.
- PHP est un serveur applicatif. Le serveur web lui demande un traitement et php lui retourne le résultat, sous forme de code html qu'il va pouvoir renvoyer au navigateur
- Access et MySQL sont des bases de données. Elles sont interrogées par php pour récupérer ou mettre à jour les informations qui y sont stockées.

Tout ça pour dire qu'il ne sert à rien de bricoler la config d'apache ou de php pour modifier le fonctionner d'access ou de mysql ;)

Concernant Access, son LIKE utilise effectivement une syntaxe différente qui te permet d'utiliser des (pseudo) expressions régulières pour donner un masque plus précis à ta recherche. Pour MySQL l'opérateur LIKE te permet seulement de spécifier les parties de la chaine que tu ne connais pas. En revanche MySQL propose l'opérateur REGEXP (ou RLIKE) pour utiliser des expressions régulières.

Dans tous les cas, ta requête n'est, en l'état, pas compatible et il te faut l'adapter en fonction de la base de données sur laquelle tu es connecté.

Access LIKE : http://office.microsoft.com/en-us/acces ... 31033.aspx
MySQL REGEXP : http://dev.mysql.com/doc/en/regexp.html
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphant du PHP | 130 Messages

31 mars 2008, 13:17

Merci beaucoup à tous. :D
Le vent souffle où il veut et tu en entends le bruit,
Mais tu ne sais d'où il vient, ni où il va ...