Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

REQUÊTE DE RECHERCHE AVEC ACCENTUATION DES MOTS


Information sur la source

Catégorie :Base de données Classé sous : requete, recherche, mot Niveau : Débutant Date de création : 24/04/2002 Date de mise à jour : 24/04/2002 12:10:35 Vu : 6 794

Note :
Aucune note

Commentaire sur cette source (0)
Ajouter un commentaire et/ou une note

Description


Recherche rapide en coldfusion/sql server avec accentuation et caractères spéciaux :

Cette solution est une solution couteuse en CPU.
Pour être plus efficace, il faut créer des champs ( ou une table ) spéciale pour la recherche, en ayant au préalable enlevé les caractères spéciaux/accentuations.

  
 

Source

  • <cfquery name="recherche" datasource="database">
  • SELECT *
  • FROM table
  • WHERE 1=1 <!--- astuce pour ne mettre que des AND/OR --->
  • <cfif IsDefined("form.mots") AND TRIM(form.mots) neq "">
  • <cfset form.mot=LCase(ReplaceList(form.mot, "à,â,ã,á,ä,é,è,ê,ë,î,ï,ì,í,ô,ö,õ,ò,ó,ù,ú,û,ü,ç,ñ", "a,a,a,a,a,e,e,e,e,i,i,i,i,o,o,o,o,o,u,u,u,u,c,n"))>
  • <cfloop list="#form.mot#" delimiters=" " index="mot">
  • <cfif Len(Trim(mot)) GT 2><!--- Ne prendre que les mots de plus de 2 caractères --->
  • AND LOWER(
  • REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE(
  • champ_recherche
  • ,'à','a'), 'â','a'), 'ã','a'), 'á','a'), 'ä','a'), 'é','e'), 'è','e'), 'ê','e'), 'ë','e'), 'î','i'), 'ï','i'), 'ì','i'), 'í','i'), 'ô','o'), 'ö','o'), 'õ','o'), 'ò','o'), 'ó','o'), 'ù','a'), 'ú','u'), 'û','u'), 'ü','u'), 'ç','c'), 'ñ','n')
  • )
  • like
  • '%#mot#%'
  • </cfif>
  • </cfloop>
  • </cfif>
  • </cfquery>
<cfquery name="recherche" datasource="database">
	SELECT *
	FROM table
	WHERE 1=1 <!--- astuce pour ne mettre que des AND/OR --->
	<cfif IsDefined("form.mots") AND TRIM(form.mots) neq "">
		<cfset form.mot=LCase(ReplaceList(form.mot, "à,â,ã,á,ä,é,è,ê,ë,î,ï,ì,í,ô,ö,õ,ò,ó,ù,ú,û,ü,ç,ñ", "a,a,a,a,a,e,e,e,e,i,i,i,i,o,o,o,o,o,u,u,u,u,c,n"))>
		<cfloop list="#form.mot#" delimiters=" " index="mot">
			<cfif Len(Trim(mot)) GT 2><!--- Ne prendre que les mots de plus de 2 caractères --->
				AND LOWER(
					REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE(
					champ_recherche
					,'à','a'), 'â','a'), 'ã','a'), 'á','a'), 'ä','a'), 'é','e'), 'è','e'), 'ê','e'), 'ë','e'), 'î','i'), 'ï','i'), 'ì','i'), 'í','i'), 'ô','o'), 'ö','o'), 'õ','o'), 'ò','o'), 'ó','o'), 'ù','a'), 'ú','u'), 'û','u'), 'ü','u'), 'ç','c'), 'ñ','n')
					)
					like
					'%#mot#%'
			</cfif>
		</cfloop>
	</cfif>
</cfquery>

Conclusion

Les commentaires/améliorations sont les bienvenus :-)
 

Commentaires et avis

Aucun commentaire pour le moment.

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

Recherche sur toutes les tables de ma bd [ par alf666666 ] hello, Comment faire une recherche sur toutes les tables de ma BD lorsque l'internaute tape qu'un mot du style, je tape le mot "test" et le site va m Recherche derniere page visitée [ par alf666666 ] Lorsque qu'un client surfe sur mon site (sans se loguer pour l'instant), ensuite il arrive sur une partie de mon site ou il est obligé de se loguer, Recherche Hébergeur CFMX [ par bastoun ] Hello tous, je suis actuellement &#224; la recherche d'un h&#233;bergeur CFMX (7 ce serait bien...) Voil&#224; ce que j'ai trouv&#233; d'int&#233;re comment je peux formater une chaine de caractere que je recupere d'une requete pour supprimer tous les mots entre {} [ par kamel92400 ] bonjour a tous !je voulais savoir comment faire pour modifier une chaine de caractere que je recupere d'une requete:la chaine c celle l&#224;:{AbonNom Requete access [ par midoutun ] Je veux savoir comment faire&nbsp; une requ&#234;te &#224; partir d'un sous formulaire? Requete SQL sur plusieurs bases [ par secdeouf ] Bonjour, Je souhaite savoir s'il est possible de faire une requête sur plusieurs bases. En fait je souhaite faire une jointure sur 2 tables situées d Afficher 10 résultat de recherche par pages [ par gomezkarim ] Bonjour;Mon site est en Coldfusion et je veux  afficher 10 résultats de recherche par pages, Merci pour votre réponse. Comment faire une requete récursive ? [ par porgy ] Bonjour,Voila maintenant plusieurs semaines que je suis confronté a un probleme que je n'arrive pas a solutionner. J'ai fait un petit intranet avec cf Recherche [ par Link ] je recherche un site en francais qui explique le fonctionnement de cold fusion... parce que j'utilise dreamweaver mais je voudrais comprendre plus à f question sur requete access97 [ par seb ] Voila, j'ai une table ou j'ai 6 champs s'appelant respectivement motcle1, motcle2,motcle3,...motcle6.Ces 6 champs contiennent le meme type de données.


Nos sponsors

Sondage...

CalendriCode

Janvier 2009
LMMJVSD
   1234
567891011
12131415161718
19202122232425
262728293031 

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, 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
Temps d'éxécution de la page : 0,484 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.