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

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Pb syntaxe sql

 


 Mot :   Pseudo :  
 
 Page :   1  2
Page Précédente
Auteur Sujet :

Pb syntaxe sql

n°1294808
SnupS
Posté le 30-01-2006 à 14:50:49  profilanswer
 

Rebonjour, voila mon pb  
 
$query2 = "select * from client where [NOM du client]='".$id."'";
 
cette requete ne renvoie rien, je suis en PHP et elle va cherché une base ACCESS, je précise que c'est le where qui merdouille et plus precisement [NOM du client] qui n'est pas reconnu car quand j'essai avec un champs constitué d'un seul mot sa marche
Si quelqu'un peut m'indiquer la syntaxe exacte....
merci!

mood
Publicité
Posté le 30-01-2006 à 14:50:49  profilanswer
 

n°1294821
SnupS
Posté le 30-01-2006 à 15:01:14  profilanswer
 

un peu d'aide svp....

n°1294900
jeoff
Posté le 30-01-2006 à 16:16:41  profilanswer
 

Pour éviter ce genre de problèmes, préfere les noms de base/table/champs sans espace ni caractères spéciaux lorsque tu crée ta structure.
 
Ca évite de perdre du temps par la suite comme tu es en train de la faire.
 
On se doute bien que le "NOM du client" de la table client correspond au nom d'un client. Tu décris l'évidence ;).
 
Contente toi de nommer le champs "NOM" tout simplement.
$query2 = "select * from client where [NOM]='".$id."'";  
 
C'est tout aussi compréhensible :).

n°1295289
SnupS
Posté le 31-01-2006 à 08:51:42  profilanswer
 

arf je me douté bien qu'on allé me répondre sa mais je ne peux pas modifier la table, je la récupère ainsi! voila un autre probleme....

n°1295298
rufo
Pas me confondre avec Lycos!
Posté le 31-01-2006 à 09:13:59  profilanswer
 

Une question comme ça. C'est normal de faire [Nom...] = id? id, ici, est sûrement la clé primaire du client, donc probablement un entier. Pour le champ Nom, on attendrait plutôt un truc du genre [Nom...] = "dupont" ou [Nom...] like "%dupont%", non?

n°1295313
SnupS
Posté le 31-01-2006 à 09:44:50  profilanswer
 

non t'inquiète $id contient un nom c'est juste pour un test.....

n°1295469
rufo
Pas me confondre avec Lycos!
Posté le 31-01-2006 à 13:01:10  profilanswer
 

et si t'écris $query2 = "select * from client where [\"NOM du client\"]='".$id."'";

n°1295514
SnupS
Posté le 31-01-2006 à 14:07:22  profilanswer
 

je vais essayer sa...

n°1295517
SnupS
Posté le 31-01-2006 à 14:10:16  profilanswer
 

marche pas........ sa renvoie aucune ligne, fais ch$^*é!!

n°1295635
rufo
Pas me confondre avec Lycos!
Posté le 31-01-2006 à 16:06:12  profilanswer
 

tu pourrais nous montrer un exemple de requête que tu fais en "dur" (un nom à la place du $id), svp?

mood
Publicité
Posté le 31-01-2006 à 16:06:12  profilanswer
 

n°1298417
SnupS
Posté le 03-02-2006 à 11:37:19  profilanswer
 

voila sa donne sa  
 
select * from client where [Nom du client]=RESIDENCE GEORGES ROSSET
 
mais sa ne renvoi aucune ligne car il comprend pas la champ : [Nom du client]

n°1298542
SnupS
Posté le 03-02-2006 à 14:13:34  profilanswer
 

rufo est attendu au rayon sql, rufo au rayon sql svp :-)

n°1299882
SnupS
Posté le 06-02-2006 à 15:51:52  profilanswer
 

up svp y'a bien quelqu'un qui peut m'aider..........

n°1299897
DeadStar
Posté le 06-02-2006 à 16:13:57  profilanswer
 

t'es sur que "nom du client" du doi le metre entre crochet ?

n°1300001
jeoff
Posté le 06-02-2006 à 17:50:55  profilanswer
 

SnupS a écrit :

voila sa donne sa  
 
select * from client where [Nom du client]=RESIDENCE GEORGES ROSSET
 
mais sa ne renvoi aucune ligne car il comprend pas la champ : [Nom du client]


 
et avec des ' ' ca marche pas mieux ?
 
select * from client where [Nom du client]='RESIDENCE GEORGES ROSSET'


Message édité par jeoff le 06-02-2006 à 17:51:10
n°1300320
SnupS
Posté le 07-02-2006 à 09:04:15  profilanswer
 

justement je suis pas sur des crochets j'ai tout essayé ", [, \ mais je ne trouve pas la syntaxe! par contre quand je cherche une ligne avec un champs en 1 mot (donc pas d'espace) je retrouve bien ma ligne.....
c'est les espace qui me chie tout...

n°1300329
jeoff
Posté le 07-02-2006 à 09:54:36  profilanswer
 

Et ya pas moyen de spécifier les caractères spéciaux sous access ?
 
Un peu comme %20 pour les espaces en HTML ?
 
EDIT voir msg plus bas


Message édité par jeoff le 07-02-2006 à 10:05:24
n°1300330
Sh@rdar
Ex-PhPéteur
Posté le 07-02-2006 à 09:57:18  profilanswer
 

et t'as pas essayé avec les quotes comme jeoff l'a indiqué ? là tu cherche une chaine, faut bien la délimiter non ?


---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft
n°1300336
jeoff
Posté le 07-02-2006 à 10:04:01  profilanswer
 

Pourrais-tu configurer une connexion ODBC sur cette base et balancer ta requête dessus via une console SQL (on a SQL view au boulot mais ya ptet mieux).
 
Une fois que tu as balancé ta requête, revient ici avec le message d'erreur si erreur il y a parceque je viens de tomber sur ça donc j'ai l'impression qu'on ne cherche pas au bon endroit. Si ca se trouve la requête est correcte mais renvoie un recordset vide.
 

Citation :


Access permet d’utiliser les espaces dans le nom des champs. On en a parfaitement le droit.  Mais c’est déconseillé car cette possibilité se paiera plus tard avec la saisie obligatoire de crochets partout dans l’application.
Or les crochets sont assez fastidieux à saisir avec un clavier AZERTY.
 
Il est astucieux d’éviter les espaces et de rester lisible en n’utilisant que des minuscules et des initiales majuscules au début des mots :
ObjectifSaisiEtContrôlé, par exemple.

n°1300346
SnupS
Posté le 07-02-2006 à 10:20:38  profilanswer
 

oui oui sa me renvoi "No tuple available etc etc"  
C'est juste a mon avis soi access qui n'arrive pas a interpreter Nom du client ou alors linux.... mais jconné rien a linux alors....
 
ps: pour les quote voir mon 1er post y'a bien la delimitation :
 
$query2 = "select * from client where [NOM du client]='".$id."'";  


Message édité par SnupS le 07-02-2006 à 10:22:34
n°1300357
jeoff
Posté le 07-02-2006 à 10:38:19  profilanswer
 

Tu peux attaquer la base en local ou sur un poste windows ?
 
Essaye une MAJ de ton ODBC.
 
Je viens de créer une base access 'client' en local, un seul champs 'nom du client' et un seul enregistrement 'RESIDENCE GEORGES ROSSET'.
 
Ta requête fonctionne ...

Message cité 1 fois
Message édité par jeoff le 07-02-2006 à 10:39:20
n°1300368
SnupS
Posté le 07-02-2006 à 11:06:30  profilanswer
 

oui mais tu l'attaque sous une page php d'un poste distant sur un serveur linux?
parce que j'ai l'impression que c'est une question d'interpretation, de qui jene c'est pas mais de toute facon quand je tape ma requête directement sous access elle fonctionne aussi......
 
ps: je viens de trouver autre chose, impossible de claquer un ORDER BY la requete ne fonctionne plus.....
 
ke mizère min garchon!

Message cité 1 fois
Message édité par SnupS le 07-02-2006 à 11:09:29
n°1300375
jeoff
Posté le 07-02-2006 à 11:22:09  profilanswer
 

Ok donc je pense que ton soucis c'est PHP, j'y connais rien là desolé.
Tu tournes sur la dernière version ?

n°1300376
SnupS
Posté le 07-02-2006 à 11:27:20  profilanswer
 

oép PHP 5 et des poussières
 
merci pour ton aide jeoff! c'est sympa mais faut que tu bosse un peu
quand même lol

n°1300431
Sh@rdar
Ex-PhPéteur
Posté le 07-02-2006 à 13:02:28  profilanswer
 

balance ton code, si ça tombe y'a un souci ailleurs :)


---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft
n°1300472
SnupS
Posté le 07-02-2006 à 14:18:45  profilanswer
 

le code c'est ce que j'ai dans mon 1er post :
 
 
$query2 = "select * from client where [NOM du client]='".$id."'";  
 
si j'écrit sa :
 
$query2 = "select * from client where plan='test'";
 
sa marche donc le probleme vient du champ NOM du client qui n'est pas reconnu ou mal interprété soit pas ACCESS, soit par linux je n'en sait rien.
 

n°1300539
cinocks
Posté le 07-02-2006 à 15:14:11  profilanswer
 

Y'a pas moyen que tu construises directement la requete sous Acces pour voir ce qu'il te donne comme syntaxe SQL. Ce serait plus simple;


---------------
MZP est de retour
n°1300600
jeoff
Posté le 07-02-2006 à 16:01:33  profilanswer
 

cinocks a écrit :

Y'a pas moyen que tu construises directement la requete sous Acces pour voir ce qu'il te donne comme syntaxe SQL. Ce serait plus simple;


 

SnupS a écrit :

mais de toute facon quand je tape ma requête directement sous access elle fonctionne aussi......


 
 :o
 
Si je dis pas de bétises, Php ne passe pas par ODBC pour attaquer la base donc le soucis se situe plutôt au niveau de PHP ...  :)

Message cité 1 fois
Message édité par jeoff le 07-02-2006 à 16:03:17
n°1300606
jeoff
Posté le 07-02-2006 à 16:08:22  profilanswer
 

Quand tu dis avoir essayé avec un nom de champs sans espace, tu as utilisé quelle syntaxe :
$query2 = "select * from client where [NOM]='".$id."'";
$query2 = "select * from client where NOM='".$id."'";
 
Si tu n'a pas testé avec les [], regarde par là ou cherche quelque chose d'approchant. Il se peut que php interprête mal les [].
http://fr2.php.net/mysql_real_escape_string
 
sinon, essaye ça mais il me semble que tu as déjà essayé
$query2 = "select * from client where \[NOM du client\]='".$id."'";


Message édité par jeoff le 07-02-2006 à 16:15:24
n°1300649
cinocks
Posté le 07-02-2006 à 16:56:16  profilanswer
 

jeoff a écrit :

:o
 
Si je dis pas de bétises, Php ne passe pas par ODBC pour attaquer la base donc le soucis se situe plutôt au niveau de PHP ...  :)


 
vu


---------------
MZP est de retour
n°1300969
SnupS
Posté le 08-02-2006 à 09:21:41  profilanswer
 

oép deja essayé jeoff, sa ne marche pas... je vais regardé un peu ce que tu m'a filé..

n°1300987
Sh@rdar
Ex-PhPéteur
Posté le 08-02-2006 à 09:54:54  profilanswer
 

et en protégeant les champs avec des ` (utilisé avec MySQL, mais sait-on jamais)
 
si access supporte les alias, t'as essayé aussi ?


Message édité par Sh@rdar le 08-02-2006 à 09:59:54

---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft
n°1301050
SnupS
Posté le 08-02-2006 à 10:48:16  profilanswer
 

marche pas avec les `
 
select * from client where `NOM du client`='ABATTOIR LEMAITRE ET CARIOT'
Warning: odbc_result() [function.odbc-result]: No tuples available at this result index in /var/www/stage/catalog/client.php on line 142
 
connais pas les alias tu peux m'expliquer?


Message édité par SnupS le 08-02-2006 à 10:52:23
n°1301066
Sh@rdar
Ex-PhPéteur
Posté le 08-02-2006 à 10:58:43  profilanswer
 

tu crée un alias du champ pour le nommer différemment
 
à mon avis c'est cuit ton truc, si tu peux pas retirer ces espaces t'es foutu :(


---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft
n°1301095
tegu
Posté le 08-02-2006 à 11:11:17  profilanswer
 

La syntaxe avec les crochets est la bonne pour MSAccess.
Je crains que ça ne soit PHP qui les transforme à la volée en autre chose
Mais d'un autre côté je suis étonné qu'aucune erreur ne soit récupérée. Si les crochets sont changés par PHP, MSAccess ne doit plus reconnaître le nom du champ et donc renvoyer une erreur.
PHP récupère-il bien les erreurs de requetes SQL pour MSAccess ?
 

n°1301216
SnupS
Posté le 08-02-2006 à 13:20:01  profilanswer
 

euh.......... tu peux répéter la question stp?
 
sinon l'erreur c'est celle du dessus comme il interprete mal le champ, il me renvoi une erreur me disant que la requête ne renvoi pas de ligne....

n°1301984
SnupS
Posté le 09-02-2006 à 13:21:10  profilanswer
 

up up a la recherche d'un pro de la syntaxe....

n°1302199
Sh@rdar
Ex-PhPéteur
Posté le 09-02-2006 à 15:49:35  profilanswer
 

ça me semble étrange d'avoir une erreur pour une requête correctement exécutée mais qui ne retourne rien :??:
 
c'est le comportement normal d'access/odbc ?


---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft
n°1302233
SnupS
Posté le 09-02-2006 à 16:27:30  profilanswer
 

je ne sait pas........ malheureusement

n°1304225
rufo
Pas me confondre avec Lycos!
Posté le 13-02-2006 à 12:44:01  profilanswer
 

SnupS a écrit :

je ne sait pas........ malheureusement


 
Pour ta requête sql, tu attaques la BD par les instructions ODBC de PHP directement ou tu passes par le lib Pear:DB?
 
Par contre, ça serait bien que tu utilises l'assistant de créations de requêtes sql d'access pour voir ce qu'il génère comme requête. Ca devrait t'aider.
 
ps : j'ai aps répondu plus car j'étais absent 1 semaine ;)

mood
Publicité
Posté le   profilanswer
 

 Page :   1  2
Page Précédente

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Pb syntaxe sql

 

Sujets relatifs
pb syntaxe dans Rowsource vba excelControler syntaxe MDP saisi
awk syntaxe... erreurs"Create table" Erreur de syntaxe ou violation d'accès
Histoire de syntaxeErreur de syntaxe pour une sous-requete
Débutant, question sur syntaxe requete SQLSyntaxe conversion des decimales
Probleme de syntaxe avec Switch caseJSP / Taglibs : vérificateur de syntaxe emmerdant
Plus de sujets relatifs à : Pb syntaxe sql


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)