|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Invité régulier
![]() Inscription : mars 2002 Messages : 15 ![]() |
Bonjour,
Je me résous à poster mon problème ici car après de multiples recherches sur le net depuis plusieurs jours, je n'ai toujours pas trouvé de de solution. Soit une table avec plusieurs champs. Via un formulaire, un internaute saisi un terme pour effectuer une recherche sur cette table et ces différents champs. Ci-dessous la requête : Code :
Tous les interclassements sont en utf8_general_ci et mon site en UTF8. Les champs sont de type "tinytext" (ils étaient en varchar(255) au départ). En local chez moi avec WampServer, cela marche très bien, mais plus chez mon hébergeur (MavenHosting). Si quelqu'un voit d'où le problème peut venir... Merci d'avance. |
||
|
|
00
|
|
|
#2 |
|
Membre Expert
![]() ![]() Sébastien AlfaiateDéveloppeur Web Inscription : janvier 2007 Messages : 1 330 ![]() |
Normalement la sensibilité à la casse vient de l'interclassement.
Tu es sur qu'il est bien en _ci ? Chaque champ possède son propre interclassement.
__________________
Zend Certified Engineer PHP 5.3 « Crois-tu comprendre le monde juste en matant le 20H Ou connaître l'histoire en ayant lu que l'angle des vainqueurs ? » Keny Arkana |
|
00
|
|
|
#3 |
|
Invité régulier
![]() Inscription : mars 2002 Messages : 15 ![]() |
Bonjour,
Oui j'ai bien vérifié, tout est en _ci, y compris les champs. J'ai fait le test sur un hébergement Infomaniak et le pb est le même.. ++ |
|
|
00
|
|
|
#4 |
|
Membre expérimenté
![]() ![]() Inscription : août 2008 Messages : 510 ![]() |
Bonjour,
Faut mettre un double pourcentage "%%" à la place de "%" ou strtoupper pour mettre la recherche tout en majuscules Cordialement
__________________
If you type Google into Google, you Can break the internet" - The IT Crowd |
|
|
00
|
|
|
#5 |
|
Membre Expert
![]() ![]() Sébastien AlfaiateDéveloppeur Web Inscription : janvier 2007 Messages : 1 330 ![]() |
Il y a déjà %%
%s c'est ce que va utiliser le sprintf. Tu peux mettre un echo pour voir ce que ta requête donne exactement ?
__________________
Zend Certified Engineer PHP 5.3 « Crois-tu comprendre le monde juste en matant le 20H Ou connaître l'histoire en ayant lu que l'angle des vainqueurs ? » Keny Arkana |
|
00
|
|
|
#6 |
|
Invité régulier
![]() Inscription : mars 2002 Messages : 15 ![]() |
J'ai déjà fait un echo sur la requête et elle marche très bien. J'ai bien le mot recherché du type " LIKE '%Lapin%' " (cf. ci-dessous)
Code :
SELECT * FROM `matable` WHERE CONCAT_WS(champ1,champ2,champ3,champ4,champ5) LIKE '%Lapin%' ORDER BY `champ1` ASC |
|
|
00
|
|
|
#7 |
|
Invité régulier
![]() Inscription : mars 2002 Messages : 15 ![]() |
|
|
|
00
|
|
|
#8 |
|
Invité régulier
![]() Inscription : mars 2002 Messages : 15 ![]() |
Je viens de faire un test intéressant : si je fait la recherche uniquement sur un champ (sans l'utilisation de CONCAT_WS), je n'ai plus ce problème de sensibilité à la casse... Cela viendrait donc de l'utilisation de CONCAT_WS.
|
|
|
00
|
|
|
#9 | ||
|
Membre expérimenté
![]() ![]() Inscription : août 2008 Messages : 510 ![]() |
Re:
Oui, mais si tu transforme ta recherche et la valeur que tu recherche en base de donnée, tu obtient le meme resultat Code :
__________________
If you type Google into Google, you Can break the internet" - The IT Crowd |
||
|
|
00
|
|
|
#10 | |||
|
Invité régulier
![]() Inscription : mars 2002 Messages : 15 ![]() |
Citation:
Code :
SELECT * FROM `matable` WHERE UCASE(CONCAT_WS('/',champ1,champ2,champ3,champ4,champ5)) LIKE UCASE('%s') ORDER BY `champ1` ASC |
|||
|
|
00
|
|
|
#11 |
|
Invité régulier
![]() Inscription : mars 2002 Messages : 15 ![]() |
J'ai (enfin) trouvé ! En cherchant sur des forums anglophones, j'ai trouvé la réponse : visiblement, l'utilisation de CONCAT_WS semble convertir les données en binaire (type BLOB), ce qui les rend sensible à la casse. La requête suivante permet de contourner le problème :
Code :
SELECT * FROM `matable` WHERE CONVERT(CONCAT_WS('/',champ1,champ2,champ3,champ4,champ5) USING UTF8) LIKE '%s' ORDER BY `champ1` ASC |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com