8791 sujets

Développement web côté serveur, CMS

Bonjour, j'ai un petit moteur de recherche sur mon site mais je n'arrive pas bien a trouver quelque renseignement.

Exemple quand je cherche "depannage" j'aimerais trouver "dépannage"

En somme un problème de é è à !

Ma base de donnée et en latin1_swedish_ci

Voici un bout de ma requête

$sql = "SELECT * FROM offre WHERE ligne = 'oui' AND (titre LIKE '%$_GET[o]%' OR des LIKE '%$_GET[o]%')";


Je fais une recherche avec LIKE dans le titre et la description !
Je teste depuis des heures avec des "COLLATE" mais sans résultat !

Merci beaucoup de votre aide ou piste !!! Smiley biggrin
IL n'existe pas de moyen simple pour passer de la version accentuée à la version non accentuée et vice-versa, peu importe l'encodage d'ailleurs. Tu dois le prévoir toi-même.

L'approche la plus simple est d'ignorer les accents depuis le début; c'est-à-dire enregistrer le terme "depannage" dans la base et non pas "dépannage", et de filtrer les accents saisis par l'utilisateur (voir par exemple la fonction strtr pour le faire).

Tu peux au besoin prévoir un terme différent pour la recherche et l'affichage, de manière à ce que ce soit "dépannage" qui apparaisse aux yeux de l'utilisateur au lieu de "depannage" quand "depannage" est recherché. Ca fait toujours plus propre.
Modérateur
Bonjour,

Sous MS SQL, il y a un moyen simple grâce à l'utilisation de COLLATE
SELECT ID
FROM tblMaTable
WHERE Champ COLLATE Latin1_General_CI_AI LIKE "%Éric%"


CI = Case Insensitive
AI = Accent insensitive
Intéressant ça, je ne savais pas que ça existait. Est-ce que cet encodage est spécifique à MSSQL ou est-ce qu'on peut aussi l'avoir avec MySQL ?
parce que je n'ai jamais vu ce fameux "AI" = accent insensitive nulle part du côté de MySQL...
Il semblerait qu'en mysql, ça dépend du "collation", enfin si j'ai bien réussi à traduire :

a écrit :
Non-UCA collations have a one-to-one mapping from character code to weight. In MySQL, such collations are case insensitive and accent insensitive. utf8_general_ci is an example: 'a', 'A', 'À', and 'á' each have different character codes but all have a weight of 0x0041 and compare as equal.


(ça vient de là : charset collation, sur mysql.com )