|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Invité régulier
![]() Mickael OuthierEmployé de SAV en TV HiFiVideo et Webmaster en Freelance Inscription : septembre 2011 Messages : 25 ![]() |
Bonjour,
Bien voilà un peu tout est dans le titre : "problème d'accent lors d'une requete SQL" ! Exemple : dans une table listant des catégories d'appareil, je veux retrouver l'ID du catégorie par le biais de son nom, en gros je peux donc faire : Code :
cela viendrait donc d'un problème d'accents, donc d'encodage, mais je n'arrive pas à le résoudre, si quelqu'un à la soluc', merci de me renseigner J'ai déjà essayé de mettre ça : header('Content-Type: text/html; charset=utf-8'); ET mysql_query("SET NAMES 'utf8'", $conn); mais ça ne fonctionne pas mieux... MICKAEL |
||
|
|
00
|
|
|
#2 |
|
Expert Confirmé
![]() Inscription : janvier 2010 Messages : 2 728 ![]() |
Salut
Est-ce qu'au niveau de la Bdd (table/champ) c'est bien du utf-8 aussi ? Puis au niveau de la casse (Console et console), est du "case insensitive" ? Quelle type as tu mis en faite ? Essai de faire un var_dump() sur la variable dans $_POST ou $_GET contenant la valeur au moment où se fait la requête, peut être verra t-on l'erreur. Mettre ton code concernant cette partie de code (la requête entre autre) peu être utile, histoire de voir comment tu procèdes. Est-ce aussi du utf-8 pour la page HTML ?
__________________
Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20 Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra] |
|
|
00
|
|
|
#3 | ||
|
Invité régulier
![]() Mickael OuthierEmployé de SAV en TV HiFiVideo et Webmaster en Freelance Inscription : septembre 2011 Messages : 25 ![]() |
salut RunCodePhp,
je te remercie pour ta réponse, j'avoue que je suis encore dans le flou... Pour corriger mon code j'ai mis ma requête SQL entre parenthèses et j'ai fait ça : Code :
encodage interne de la page :ISO-8859-1 l'encoage de ma chaine : UTF-8 ma chaine encodée en UTF8 : TV â Vidéo â TNT â Satellite string 'TV â Vidéo â TNT â Satellite' (length=47) ma chaine apres decodage UTF8 : TV – Vidéo – TNT – Satellite Que pensse tu de ça : dans ma chaine encoder en utf8 ?? Pas bon non ?? |
||
|
|
00
|
|
|
#4 | ||||||||
|
Expert Confirmé
![]() Inscription : janvier 2010 Messages : 2 728 ![]() |
Humm ... ça a l'air d'être flou effectivement.
Un petit point s'impose. D'abord, la première difficulté il est vrai, c'est que parmi les outils qu'on utilise, ils ne sont pas tous encodés en UTF-8, mais l'avenir va dans ce sens là, donc il est bon d'adopter cet encodage. Donc admettons que tu veuille faire un site en tout UTF-8 (ce qui me semble être le cas), alors il faut que tout soit en UTF-8. 1/ Son éditeur de code (de mon coté NetBean par exemple), tous les fichiers doivent être en UTF-8 sans BOM. 2/ Php doit être en Php. Il y a plusieurs moyen de fixer ça. Le php.ini -> default_charset = "UTF-8" ou alors en Php (rien n'empêche de faire les 2) 3/ La Bdd. Il faut définir l'interclassement par défaut de la Base de donnée. De mon coté par exemple c'est : utf8_general_ci Tu peux le vérifier avec PhpMyAdmin -> Opération Puis à chaque création de table, définir comme charset par défaut UTF8. Un exemple quand je fais un export d'une table Code :
4/ Les pages HTML doivent être en UTF-8. Exemple : Code :
Par exemple : Code :
Mais théoriquement, on a pas besoin, mais il est vrai que certaines fonctions Php n'exploite pas l'UTF-8 quand bien même qu'il soit bien fixé, utiliser les mb_* devient nécessaire. Faut voir. Toutjours est il que normalement tu n'as plus besoin de faire des utf8_encode() ou utf8_decode(), je dirais même surtout pas (sauf cas rare et bien déterminé). Grosso modo, si tout est bien fixé et cohérent, il n'y a plus rien à faire. Pour tester tout ça après avoir fait le point peut être quelques corrections, fais juste : Code :
__________________
Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20 Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra] |
||||||||
|
|
00
|
|
|
#5 | ||||
|
Invité régulier
![]() Mickael OuthierEmployé de SAV en TV HiFiVideo et Webmaster en Freelance Inscription : septembre 2011 Messages : 25 ![]() |
J'ai tenté les différentes options proposées,
aucune ne règle mon problème, je me suis arrêté à : Code :
mais ça ne change rien... par contre lorsque je fais : Code :
encodage interne de la page :UTF-8 valeur de la chaine de caractère soumise via la variable = TV – Vidéo – TNT – Satellite string 'TV – Vidéo – TNT – Satellite' (length=36) var_dump de la variable = encodage de la variable = UTF-8 TV – Vidéo – TNT – Satellite Ma variable est bien en utf8, l'interclassement de ma BDD aussi ! Donc ça devra marcher, mais malgré ça non ça ne fonctionne pas... Par ailleur la ligne "default_charset" de mon fichier php.ini est la suivante = default_charset = "iso-8859-1", donc pas égale à UTF-8, mais bon je ne crois pas, au regard de ce que j'ai appris en quelques heures... que ça ne change grand chose... et dans le cas contraire est ce que ce n'est pas dangereux pour la centaine d'autres script (et les futurs script) qui tourne sur mon serveur d'éval' ?? |
||||
|
|
00
|
|
|
#6 | |
|
Expert Confirmé
![]() Inscription : janvier 2010 Messages : 2 728 ![]() |
Citation:
Il faut donc modifier (redéfinir) sa valeur par UTF-8 si ce n'est pas le cas. C'est avec ce code que je t'ai mis précédemment : Pour vérifier que cette valeur a bien changé ou alors pour savoir quelle valeur elle a, suffit d'afficher sa valeur : Code :
echo 'default_charset : '.ini_set('default_charset').'<br />'; Et comme je l'avais précisé, les fonctions mb_* c'est optionnel, c'est pour faire d'autres choses. Mets ça de coté pour le moment. Ensuite pour vérifier que l'encodage coté Bdd est correcte, suffit de faire une simple requête sur une table/champ comportant des caractères spéciaux, et les afficher dans une page. (avec le SET NAME -> UTF-8 effectué au préalable bien entendu). As tu essayé de faire cette requête dans PhpMyAdmin ? Trouve t-il la donnée ? (le -> Téléviseur)
__________________
Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20 Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra] |
|
|
|
00
|
|
|
#7 |
|
Invité régulier
![]() Mickael OuthierEmployé de SAV en TV HiFiVideo et Webmaster en Freelance Inscription : septembre 2011 Messages : 25 ![]() |
re,
et ben nan... malgré le paramétrage du fichier php.ini, ça ne marche toujours pas ... j'ai essayé tous ce que l'ont ma dit de faire sur les différents forum mais sans succès... J’arrête là, j'ai trouvé une autre solution qui me permet d'utiliser l'ID de la catégorie plutôt que son nom pour faire la recherche... désolé mais il faut que j'avance, si tu veux essayer de trouver la solution pour faire une recherche dans une base de données avec le nom... ce sera grand honneur pour toi de trouver la solution, merci encore pour ton aide, et bonne semaine, MICKAEL |
|
|
00
|
|
|
#8 | |
|
Expert Confirmé
![]() Inscription : janvier 2010 Messages : 2 728 ![]() |
Citation:
![]() Relis ce topic, tu remarqueras qu'à plusieurs reprises je te demandais de me fournir des informations. Cependant, tu fournis aucune des ces informations. En somme, tu fournis que les infos que toi tu juges utiles, et non celles que nous jugeons utiles. ![]() Forcément ... En procédant ainsi, et bien tu auras beau demander de l'aide dans 50 forums différents, aucune personne ne pourra savoir d'où vient le problème. A part le "petit bonheur la chance" bien sûr.
__________________
Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20 Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra] |
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com