begin process at 2010 07 29 22:30:28
  Trouver un code source :
 
dans
 
Accueil > Forum > 

SQL

 > 

MySQL

 > 

Requêtes

 > 

Recherche sans tenir compte des accents


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Recherche sans tenir compte des accents

lundi 23 juin 2008 à 16:14:33 | Recherche sans tenir compte des accents

titi2111

Bonjour,

J'ai créé un catalogue php pour effectuer des recherche dans une base MySQL. Je voudrais que lorqu'on rentre un mot clef avec ou sans accents, toutes les lignes contenant ce mot avec ou sans accent ressortent.

J'ai donc trouvé une fonction php assez simple pour enlever tous les accents des mots clefs entrées:

function enleve_accent($chaine){
    $search = array ('@[ÈÉÊËèéêë]@i','@[ÀÁÂÃÄÅàáâãäå]@i','@[ÌÍÎÏìíîï]@i','@[ÙÚÛÜùúûü]@i','@[ÒÓÔÕÖØòóôõöø]@i','@[Çç]@i','@[ÿ]@i','@[Ññ]@');
    $replace = array ('e','a','i','u','o','c','y','n');
    return preg_replace($search, $replace, $chaine);
 }

Ce qui me pose un problème, c'est que tous les champs de ma base ont subi un "htmlentities", je cherche donc une requête  MySQL me permettant d'ignorer les
é à è et les nombreux autres...

Merci pour votre aide.



mardi 24 juin 2008 à 13:23:59 | Re : Recherche sans tenir compte des accents

titi2111

Réponse acceptée !
J'ai finalement trouvé une solution:

La fonction pour enlever les accents des mots clefs de recherche:
function enleve_accent($chaine){
    $search = array ('@[ÈÉÊËèéêë]@i','@[ÀÁÂÃÄÅàáâãäå]@i','@[ÌÍÎÏìíîï]@i','@[ÙÚÛÜùúûü]@i','@[ÒÓÔÕÖØòóôõöø]@i','@[Çç]@i','@[ÿ]@i','@[Ññ]@');
    $replace = array ('e','a','i','u','o','c','y','n');
    return preg_replace($search, $replace, $chaine);
 }

La fonction pour remplacer les &...; dans la recherche sql:

function enleve_accent_sql($chaine) {
$search=array('È','É','Ê','Ë','è','é','ê','ë','À','Á','Â','Ã','Ä','Å','à','á','â','ã','ä','å','Ì','Í','Î','Ï','ì','í','î','ï','Ù','Ú','Û','Ü','ù','ú','û','ü','Ò','Ó','Ô','Õ','Ö','ò','ó','ô','õ','ö','Ç','ç','ÿ');
$replace=array('e','e','e','e','e','e','e','e','a','a','a','a','a','a','a','a','a','a','a','a','i','i','i','i','i','i','i','i','u','u','u','u','u','u','u','u','o','o','o','o','o','o','o','o','o','o','c','c','y');
for ($i=0;$i<$c=count($search);$i++) {
$chaine = "REPLACE(($chaine),'".htmlentities($search[$i],ENT_QUOTES)."','$replace[$i]')";
}
return $chaine;
}

$mot = enleve_accent($_POST["mot"]);

Recherche du mot dans la base:
$query = "SELECT * FROM fiches_ouvrages
        WHERE ".
enleve_accent_sql(COLONNE)." LIKE \"%$mot%\")";

C'est pas tres élégant mais ça fonctionne...
Avertissez moi si vous connaissez une autre méthode.

mardi 24 juin 2008 à 13:39:08 | Re : Recherche sans tenir compte des accents

titi2111

Oups la dernière ligne c'est
WHERE ".enleve_accent_sql("COLONNE")." LIKE \"%$mot%\")";

Sans les guillemets ça marche moins bien...



Cette discussion est classée dans : recherche, replace, accents, compte, tenir


Répondre à ce message

Sujets en rapport avec ce message

Effectuer une recherche sans tenir compte des majuscules/minuscules [ par ov3rdoze ] Bonjour à tousJe travaille sur une galerie photo (en PHP avec une base MySQL) dans laquelle j'ai mis un formulaire avec un champs recherche. Quand on Recherche une boite de dialogue de connexion. [ par lenium ] Bonjour,Je cherche à avoir une boite de dialogue de connexion à adapter. Pouvez-vous m'aider... Cela fait 2 jours déjà que je cherche, peut etre m'y p Systeme cache pour une recherche [ par ehod3011 ] Bonjour  a tousje vous faire une sp qui me permet de garder un requete en memoire dans le but pas la reexecuter si la si la meme requete est demandé u [bcp] importer quelques champs d'un fichier qui en compte 23 [ par bossun ] Salut, J'ai un fichier que je reçois tous les matins. je voudrais le transférer dans une table. or ce fichier contient 23 colonnes et moi j'en ai beso plusieurs compte utilisateur [ par josekym ] bonjour s'il vous plait je suis nouvelle dans les bdje suis entrain d'implémenter une API web qui va gere les préinscription en ligne à une école mais procédure du recherche [ par beet2che ] bonjourmon objectif est de créer une procédure permettant de rechercher tel que TNS commence par le paramétre @tnsvoici le code :create procedure [dbo indexation des champs [ par azahiri ] Bonjour, j'ai une base de données Oracle et j'ai une application ou ya des requetes pour faire des recherche sur la base. je voudrai optimiser ces rec SQL Dans un domaine [ par cretthie ] Bonjour,J'ai acheter un sql standard edition, j'ai monté mon iis avec mon nom de domaine sur dyndns ou autre, je sais plus.Tout d'abord, il me semble Recherche fulltext - Lent à la première exécution, puis OK... [ par PetitMuf ] Bonjour,   J'ai un problème avec la recherche fulltext sur SQL Server 2005. Lorsque j'execute un requête (quelque soit le prédicat..., mais j'utilise Linq - parametre && et || pas pris en compte [ par wally88 ] Bonjour, J'ai une requete ou j'ai bien join mes tables tout fonctionne a part un "critère" C'est pour  un systeme de petit annonce.Je fais une recherc


Nos sponsors


Sondage...

CalendriCode

Juillet 2010
LMMJVSD
   1234
567891011
12131415161718
19202122232425
262728293031 

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,218 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales