caractères spéciaux dans une entete de champ de table

Mammouth du PHP | 592 Messages

09 oct. 2008, 09:49

bonjour à tous

voila j'ai un soucis au niveau de l'interrogation d'un table
l'entete de mon champ est N°CLient et forcément lorsque j'essaye de le traiter
par sql il ne le prend pas

il y a t'il une astuce pour ça?
$query="SELECT * FROM BETTY.FACRECTEST WHERE N°Client='".$_POST['cli']."'";
juste pour info voici l'erreur :

Warning: odbc_exec(): SQL error: [IBM][Pilote ODBC iSeries Access][DB2 UDB]SQL0104 - Elément syntaxique ° n'est pas correct. Eléments possibles : < > = <> <= !< !> != >= ¬< ¬> ¬= IN NOT., SQL state 37000 in SQLExecDirect in c:\program files\easyphp1-8\www\stat\mtcli.php on line 86

ViPHP
ViPHP | 4039 Messages

09 oct. 2008, 10:15

C'est courageux que de vouloir utiliser des caractères "exotique" dans le nom d'une colonne.. essaye en mettant des accents (! pas des apostrophes):

Code : Tout sélectionner

SELECT * FROM BETTY.FACRECTEST WHERE `N°Client`='".$_POST['cli']."'
J'ai eu le même souci avec une feuille excel, impossible de faire comprendre que des accents ou tout caractère qui n'était pas a-zA-Z était à proscrire..
Mais qu'importe. (je suis ici - dernier petit projet)
Berze going social.

Mammouth du PHP | 592 Messages

09 oct. 2008, 10:22

courageux ... non ... je suis obligé de faire avec :lol:

les accents ... négatifs capitaine ... ça passe pas et on a perdu le sergent ryan :P

erreur similaire : Warning: odbc_exec(): SQL error: [IBM][Pilote ODBC iSeries Access][DB2 UDB]SQL0104 - Elément syntaxique ` n'est pas correct. Eléments possibles : ( + - ? : DAY NOT RRN CASE CAST CHAR DATE DAYS HASH HOUR LEFT., SQL state 37000 in SQLExecDirect in c:\program files\easyphp1-8\www\stat\mtcli.php on line 86

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

09 oct. 2008, 10:34

J'ai cherché sur :google: (mots clefs sql db2 quote)
http://bytes.com/forum/thread624644.html
Règle n°2 du webmaster : Toujours commencer par le HTML qu'on veut obtenir....toujours ! :priere:
J'aime apprendre de nouvelles choses.

Mammouth du PHP | 592 Messages

09 oct. 2008, 11:24

alors si je comprend bien :

le ' permettrai de rendre lisible le ° pour l'exécution de ma requete.

or j'ai un message d'erreur me disant qu'il n'accepte pas les caractères UTF8.

message d'erreur :
Warning: odbc_exec(): SQL error: [IBM][Pilote ODBC iSeries Access][DB2 UDB]SQL0105 - Constante de chaîne de type UTF8, graphique ou mixte non admise., SQL state 37000 in SQLExecDirect in c:\program files\easyphp1-8\www\stat\mtcli.php on line 86.


ou alors je suis complétement à la masse :shock:


ça peut pas venir de mon lien odbc par hasard?

ViPHP
ViPHP | 4039 Messages

09 oct. 2008, 11:28

peut-être un souci d'encodage du nom de la table..

Si ton fichier php est en utf8, essaye ceci:
utf8_decode(N°Client)

pour le faire passer en iso.
Mais qu'importe. (je suis ici - dernier petit projet)
Berze going social.

Mammouth du PHP | 592 Messages

09 oct. 2008, 11:32

non il me met toujours le meme message.
$query="SELECT * FROM BETTY.FACRECTEST WHERE ".utf8_decode("N'°'Client")."='".$_POST['cli']."'";
c'est bien comme ça pour l'utiliser ?

ViPHP
ViPHP | 4039 Messages

09 oct. 2008, 11:51

Plutôt comme ceci:
$query="SELECT * FROM BETTY.FACRECTEST WHERE ".utf8_decode("N°Client")."='".$_POST['cli']."'"; 
mais si on à enlevé le UTF8, reste encore l'élément graphique ou mixte..

Ceci dit, l'apostrophe délimite un chaine textuelle, pas le nom d'une table.

Il doit y avoir moyen de délimiter le nom de la table, mais si ce ne sont pas les accents, je ne vois pas ce que ça pourrait être..
Mais qu'importe. (je suis ici - dernier petit projet)
Berze going social.

Mammouth du PHP | 592 Messages

09 oct. 2008, 11:54

en fait si je met pas les ' ça me marque exactment le meme message d'erreur que mon premier message.

j'ai trouver ça sur du vb mais ça fonctine pas non plus : http://www.vbfrance.com/forum/sujet-REQ ... 72632.aspx

Mammouth du PHP | 1029 Messages

09 oct. 2008, 15:15

Tu es sur que cela ne fonctionne pas ?
$query="SELECT * FROM BETTY.FACRECTEST WHERE [`N°Client`]=".$_POST['cli']."; 
L'expérience est la somme de toutes nos erreurs.

Mammouth du PHP | 592 Messages

09 oct. 2008, 15:40

ouais mais il me dis qu'il comprend pas les [.

message : Warning: odbc_exec(): SQL error: [IBM][Pilote ODBC iSeries Access][DB2 UDB]SQL0104 - Elément syntaxique [ n'est pas correct. Eléments possibles : ( + - ? : DAY NOT RRN CASE CAST CHAR DATE DAYS HASH HOUR LEFT., SQL state 37000 in SQLExecDirect in c:\program files\easyphp1-8\www\stat\mtcli.php on line 86

j'ai l'impression que c'est le lien odbc vers mon AS400 qui bugge mais après comment faire ? :P

[Note : ce message a été posté de manière anonyme avant d'être réattribué à son auteur]

Mammouth du PHP | 1029 Messages

09 oct. 2008, 15:50

Je viens de créer un table N°Client

et dans mon Editeur Sql ceci passe sans problème

Code : Tout sélectionner

select "N°Client"."nom" from "MAITREPYLOS"."N°Client"
L'expérience est la somme de toutes nos erreurs.

Mammouth du PHP | 592 Messages

09 oct. 2008, 16:11

non mais en fait laissez tomber j'ai eut un eclair d'un coup :

si dans l'editeur as400 je ne voyai pas les étiquettes de colonnes qui remplace les denominations
de champ.

ET PAFFF

en plein dedans donc c normal qu'il ne me les trouvait pas :shock:
Modifié en dernier par fred9999 le 09 oct. 2008, 17:04, modifié 1 fois.

Eléphant du PHP | 254 Messages

09 oct. 2008, 16:35

Euh j'veux pas dire de bétise mais pour gérer les caracteres spéciaux c'est l'accent inversé qu'il faut utiliser, et non pas l'apostrophe ou le guillemet

ViPHP
ViPHP | 4039 Messages

09 oct. 2008, 19:15

non mais en fait laissez tomber j'ai eut un eclair d'un coup :

si dans l'editeur as400 je ne voyai pas les étiquettes de colonnes qui remplace les denominations
de champ.

ET PAFFF

en plein dedans donc c normal qu'il ne me les trouvait pas :shock:
:axe:
Mais qu'importe. (je suis ici - dernier petit projet)
Berze going social.