accents php/sql

accents php/sql - PHP - Programmation

Marsh Posté le 04-05-2009 à 18:16:31    

Salut,
 
j'ai un souci avec une requete select en php:
 
une table sql qui stocke le nom du client, et parfois ce nom comprend des accents!
 
un script de recherche multi criteres en php: lorsque l'utilisateur rentre le nom du client, et que celui ci comprend un accent, le php ne le trouve pas.
Par contre, quand je fais un echo de la requete exacte et que je l'execute dans phpmyadmin, la ligne du client est trouvée.
 
J'ai essayé pleins de fonctions, notamment trouvé dans les topics ici relatifs a des sujets avoisinants... htmlentities, html_entity_decode, htmlspecialchars, enfin tout bien varié, et j'ai pas encore trouvé la bonne. Est ce que ça existe, et sinon comment faire? Je précise que le champ nom dans la table sql a été  créé avec l'interclassement latin_swedish

Reply

Marsh Posté le 04-05-2009 à 18:16:31   

Reply

Marsh Posté le 10-05-2009 à 20:53:23    

Je ne vois pas le rapport avec les fonctions html*() ...

 

Et plutôt que de chercher la fonction magique, le mieux serait de cerner le problème.

 

Comment est encodée la page de ton formulaire ? en utf-8 ou en iso-machintruc ?


Message édité par theredled le 10-05-2009 à 20:54:26

---------------
Contes de fées en yaourt --- --- zed, souviens-toi de ma dernière lettre. --- Rate ta musique
Reply

Marsh Posté le 11-05-2009 à 10:58:43    

moi non plus je vois pas le rapport, mais j'ai un peu tout essayé ce qui me passait par la tete avant de venir poster ici :)
 
les pages sont en charset=ISO-8859-1, et les champs de la base en latin1_swedish_ci

Reply

Marsh Posté le 11-05-2009 à 14:38:15    

Au niveau du serveur tu dois avoir d'autres options : "Jeu de caractères pour MySQL, Interclassement pour la connexion MySQL" dans phpmyadmin

 

Voit si tu n'as pas de l'utf-8 là-dedans.


Message édité par theredled le 11-05-2009 à 14:38:32

---------------
Contes de fées en yaourt --- --- zed, souviens-toi de ma dernière lettre. --- Rate ta musique
Reply

Marsh Posté le 11-05-2009 à 15:00:28    

si tu fais un htmlentities dans ta requête c'est normal que ça marche pas mais qu'en affichant la requête dans ton navigateur tu obtiennes un résultat correct..:D


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 11-05-2009 à 15:03:50    

Hmm j'osais espérer qu'il avait bien c/c la source et non l'affichage mais effectivement c'est crédible :o


---------------
Contes de fées en yaourt --- --- zed, souviens-toi de ma dernière lettre. --- Rate ta musique
Reply

Marsh Posté le 12-05-2009 à 10:26:41    

non non, j'ai pas d'htmlentities dans ma requete ... j'ia juste dit avoir testé 100 trucs histoire de voir si ca marchait ;)  
 
j'ai juste un bete champ input text, ou je mets par exemple testé.  
 
Un insert sql      

Code :
  1. if(!$sql->query('INSERT INTO `crm_billets` (cid,usercode,objet,statut,visible,date_creation,date_maj) VALUES("'.$cid.'","'.$code.'","'.$objet.'","2","1","'.date('Y-m-d H:i:s').'","'.date('Y-m-d H:i:s').'" )'))
  2. $erreur = ERR_SQL;


 
je viens de changer l'interclassement du champ objet a utf8_swedish_ci. Quand je vais dans phpmyadmin, ca me le sauve comme ca: testé. Y'a pas moyen de le sauver betement en testé?

Reply

Marsh Posté le 12-05-2009 à 10:34:42    

En fait il faut que tu aies le même encodage tout le long de la chaîne : la page, la discussion avec la BDD, la BDD.

 

Donc rajouter un étage d'UTF-8 quand tout le reste est en ISO n'est pas forcément la meilleure solution :D

 

Ou alors tu passes tout en utf-8 (ce que je te conseille à la limite)

 

ps : Sinon fait gaffe dans ta requete, tu n'échappe pas tes variables, tu risques d'être sensible aux injections SQL (et que ça merde au moindre guillemet). A moins que tu aies activé les magic_quotes, ce qui est une mauvaise solution :o


Message édité par theredled le 12-05-2009 à 10:40:37

---------------
Contes de fées en yaourt --- --- zed, souviens-toi de ma dernière lettre. --- Rate ta musique
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed