Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > Langages serveur > ASP
ASP Forum sur la programmation ASP. Avant de poster : Cours ASP, FAQ ASP
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 08/04/2011, 11h27   #1
Nouveau Membre du Club
 
Sleeg Adri
Inscription : juillet 2010
Messages : 130
Détails du profil
Informations personnelles :
Nom : Sleeg Adri

Informations forums :
Inscription : juillet 2010
Messages : 130
Points : 38
Points : 38
Par défaut Remplacer les accents des valeurs d'une BD pour la recherche

Je voudrais faire un champ de recherche qui interroge ma base de donnée, mais je voudrais que si je note un mot sans accent cela affiche également les mots avec accent.

Ex : Je tape "Pietrain" et "Piétrain" s'affiche.

J'ai essayé avec "Replace" comme lorsque je veux enregistrer une valeur et supprimer les accents d'un mot, mais dans ce cas-ci ça ne marche pas.

Quelqu'un sait comment on fait?

PS: ma base de donnée est en Access, mais je voudrais aussi pouvoir le faire en SQL...

Merci d'avance.
sleeg est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/04/2011, 12h27   #2
Membre confirmé
 
Homme Olivier
Webmaster Pays Basque
Inscription : avril 2004
Messages : 151
Détails du profil
Informations personnelles :
Nom : Homme Olivier
Âge : 40
Localisation : France

Informations professionnelles :
Activité : Webmaster Pays Basque
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : avril 2004
Messages : 151
Points : 200
Points : 200
Envoyer un message via Skype™ à eclisse
Une expression régulière peut être ?
eclisse est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/04/2011, 14h13   #3
Nouveau Membre du Club
 
Sleeg Adri
Inscription : juillet 2010
Messages : 130
Détails du profil
Informations personnelles :
Nom : Sleeg Adri

Informations forums :
Inscription : juillet 2010
Messages : 130
Points : 38
Points : 38
J'ai trouvé ce code en faisant une recherche que j'ai ajouté à la suite de ma variable de recherche... Mais je n'arrive pas à le faire fonctionner.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 
xWords = Request.Form("WordToSearch")
IF xWords="" THEN xWords = Request.querystring("xWordToSearch") END IF
 
Function noaccent(xWords) ' Vire les accents
   dim temp,regEx
   temp = xWords
   ' crée un objet RegExp
   Set regEx = New RegExp
   ' Casse ignorée
   regEx.IgnoreCase = True
   ' Recherche sur toute la chaîne
   regEx.Global = True
   ' Chars cherchés entre [ et ]
   regEx.Pattern = "[àâ]"
   ' Remplace ces chars par un a
   temp = regEx.REPLACE(temp,"a")
   ' autre masque
   regEx.Pattern = "[éèêë]"
   temp = regEx.REPLACE(temp,"e")
   ' etc pour les autres lettres...
   noaccent=temp
end function
sleeg est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/04/2011, 18h36   #4
Membre confirmé
 
Homme Olivier
Webmaster Pays Basque
Inscription : avril 2004
Messages : 151
Détails du profil
Informations personnelles :
Nom : Homme Olivier
Âge : 40
Localisation : France

Informations professionnelles :
Activité : Webmaster Pays Basque
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : avril 2004
Messages : 151
Points : 200
Points : 200
Envoyer un message via Skype™ à eclisse
Essayes ça en dessous de ta fonction :
Code :
1
2
3
 
xWords="J'espére que ça va marché !!"
response.write noaccent(xWords)
eclisse est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/04/2011, 11h18   #5
Nouveau Membre du Club
 
Sleeg Adri
Inscription : juillet 2010
Messages : 130
Détails du profil
Informations personnelles :
Nom : Sleeg Adri

Informations forums :
Inscription : juillet 2010
Messages : 130
Points : 38
Points : 38
Ça retire bien les accents du contenu de la variable, mais ça ne marche pas lorsque je l'applique pour le champ de recherche...
Mon problème reste le même puisque c'est un mot sans accent qui est en requête et les mots avec accents de ma BD n'apparaissent pas.
sleeg est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/04/2011, 11h30   #6
Membre confirmé
 
Homme Olivier
Webmaster Pays Basque
Inscription : avril 2004
Messages : 151
Détails du profil
Informations personnelles :
Nom : Homme Olivier
Âge : 40
Localisation : France

Informations professionnelles :
Activité : Webmaster Pays Basque
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : avril 2004
Messages : 151
Points : 200
Points : 200
Envoyer un message via Skype™ à eclisse
Ce qui est normal puisquer ta fonction a pour principe de mettre à plat tous les mots...

Pour le mettre en place sur ta recherche, il te suffit de faire
Code :
xWords = noaccent(Request.Form("WordToSearch"))
Par contre, effectivement, si le mot recherché est sans accent mais que tu veuilles faire une recherche dans ta base sur les mots accentués, cette fonction ne marche pas. Il faudrait une seconde fonction qui fasse exactemnent l'inverse de la fonction noaccents, c'est à dire remplacer les caractères 'a' par 'à', 'e' par 'è', etc.
eclisse est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/04/2011, 14h44   #7
Nouveau Membre du Club
 
Sleeg Adri
Inscription : juillet 2010
Messages : 130
Détails du profil
Informations personnelles :
Nom : Sleeg Adri

Informations forums :
Inscription : juillet 2010
Messages : 130
Points : 38
Points : 38
Oui j'avais déjà essayé cela... Et donc je dois bien inverser ma fonction.

J'ai essayé comme ceci :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 
Function noaccent(xWords) ' Vire les accents
   dim temp,regEx
   temp = xWords
   ' crée un objet RegExp
   Set regEx = New RegExp
   ' Casse ignorée
   regEx.IgnoreCase = True
   ' Recherche sur toute la chaîne
   regEx.Global = True
   ' Chars cherchés entre [ et ]
   regEx.Pattern = "a"
   ' Remplace ces chars par un a
   temp = regEx.REPLACE(temp,"[àâ]")
   ' autre masque
   regEx.Pattern = "e"
   temp = regEx.REPLACE(temp,"[éèêë]")
   ' etc pour les autres lettres...
   noaccent=temp
end function
Evidement ça ne marche pas... C'est l'expression complète [éèêë] qui revient à la place du "e". Comment faire pour indiquer, que c'est les 4 confondues qu'il doit remplacer...?
sleeg est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/04/2011, 15h11   #8
Membre confirmé
 
Homme Olivier
Webmaster Pays Basque
Inscription : avril 2004
Messages : 151
Détails du profil
Informations personnelles :
Nom : Homme Olivier
Âge : 40
Localisation : France

Informations professionnelles :
Activité : Webmaster Pays Basque
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : avril 2004
Messages : 151
Points : 200
Points : 200
Envoyer un message via Skype™ à eclisse
ce qu'il te renvoi est normal puisque tu lui demande de remplacer une lettre sans accent par l'ensemble des équivalents avec accents...
le plus simpple dans ton cas serait d'avoir 2 fonctions, celle ci pour l'asp et une équivalete pour ta base de données de manière à faire une recherche sur des caractères sans accents.
Pour access, je sais pas mais pour sql, c'est une procédure stockée qu'il te faudrait, qui fasse des replaces de caractères accentuées par les mêmes non accentuées.
eclisse est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h25.


 
 
 
 
Partenaires

Hébergement Web