IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP Discussion :

Remplacer les accents des valeurs d'une BD pour la recherche


Sujet :

ASP

  1. #1
    Membre régulier
    Inscrit en
    Juillet 2010
    Messages
    158
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 158
    Points : 89
    Points
    89
    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.

  2. #2
    Membre actif
    Homme Profil pro
    Webmaster Pays Basque
    Inscrit en
    Avril 2004
    Messages
    207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2004
    Messages : 207
    Points : 238
    Points
    238
    Par défaut
    Une expression régulière peut être ?

  3. #3
    Membre régulier
    Inscrit en
    Juillet 2010
    Messages
    158
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 158
    Points : 89
    Points
    89
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  4. #4
    Membre actif
    Homme Profil pro
    Webmaster Pays Basque
    Inscrit en
    Avril 2004
    Messages
    207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2004
    Messages : 207
    Points : 238
    Points
    238
    Par défaut
    Essayes ça en dessous de ta fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    xWords="J'espére que ça va marché !!"
    response.write noaccent(xWords)

  5. #5
    Membre régulier
    Inscrit en
    Juillet 2010
    Messages
    158
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 158
    Points : 89
    Points
    89
    Par défaut
    Ç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.

  6. #6
    Membre actif
    Homme Profil pro
    Webmaster Pays Basque
    Inscrit en
    Avril 2004
    Messages
    207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2004
    Messages : 207
    Points : 238
    Points
    238
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

  7. #7
    Membre régulier
    Inscrit en
    Juillet 2010
    Messages
    158
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 158
    Points : 89
    Points
    89
    Par défaut
    Oui j'avais déjà essayé cela... Et donc je dois bien inverser ma fonction.

    J'ai essayé comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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...?

  8. #8
    Membre actif
    Homme Profil pro
    Webmaster Pays Basque
    Inscrit en
    Avril 2004
    Messages
    207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2004
    Messages : 207
    Points : 238
    Points
    238
    Par défaut
    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.

Discussions similaires

  1. Obtenir les informations des valeurs d'une map
    Par daydream123 dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 15/10/2012, 14h07
  2. Remplacer les " par des \" dans une chaine
    Par jojodu31 dans le forum Débuter avec Java
    Réponses: 9
    Dernier message: 18/04/2008, 15h14
  3. Réponses: 9
    Dernier message: 18/02/2008, 12h25
  4. Remplacer des balises par des valeurs dans une String
    Par RadicalBob dans le forum Langage
    Réponses: 4
    Dernier message: 26/04/2007, 16h22
  5. Remplacer les accents dans une chaîne
    Par mathieumg dans le forum C
    Réponses: 9
    Dernier message: 23/07/2006, 16h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo