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 :

Problème avec les apostrophes ASP - VBScript


Sujet :

ASP

  1. #1
    Candidat au Club
    Inscrit en
    Avril 2005
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 3
    Points : 4
    Points
    4
    Par défaut Problème avec les apostrophes ASP - VBScript
    Bonjour à tous,
    j'ai un problème un peu embêtant d'insertion d'apostrophes dans un champ de ma BdD...

    Je suis en train de coder mon premier site (un Intranet pour un contrat de deux mois) en ASP, qui communique avec une base Access '97.
    Mon problème est le suivant :

    un utilisateur doit entrer des données à stocker dans la base, par le biais d'un formulaire "formulaire.asp".

    Lors du submit de ce formulaire, j'exécute un script VBScript (dans la page "maj.asp") qui récupère les infos, et exécute la requête qui va bien (INSERT ou UPDATE suivant les cas.
    Problème : si l'utilisateur rentre une apostrophe dans un des champs, j'obtiens une erreur...

    J'ai donc essayé le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Replace(monTexte, "'", "''")
    , et même
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Replace (monTexte, "'", "''''")
    , puisque les avis divergent sur la syntaxe correcte : doit-on doubler ou quadrupler les ' pour qu'Access l'accepte... dans les deux cas, j'ai le même souci :
    lors du passage de mon "formulaire.asp" à "maj.asp", l'ensemble des champs dans lesquels une valeur a été saisie est préfixé et suffixé par une apostrophe... lesquelles apostrophes seront elles aussi transformés par la fonction Replace(...)
    Prenons un exemple : j'ai dans "formulaire.asp", un champ :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="text" name="monTexte">
    Partons du principe que l'utilisateur saisit "toto" dans ce champ.
    Je récupère (dans "maj.asp") le contenu saisi parl'utilisateur, via :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim texteSaisi
    texteSaisi = Request.Form("monTexte")
    A partir de cet instant, texteSaisi contient 'toto' et non pas toto tout simplement.
    Donc évidemment, l'utilisation de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim monNouveauTexte
    monNouveauTexte = Replace(texteSaisi, "'", "''")
    entraîne une modification de TOUTES les apostrophes, et du coup, j'obtiens
    ''toto''
    comme valeur pour ma variable monNouveauTexte (avec que des apostrophes)...

    Le souci majeur est évidemment que mon utilisateur veut pouvoir saisir un texte avec des apostrophes dedans (à la place de toto), par exemple
    ASP c'est chouette

    j'obtiens alors, après le passage dans ma fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    monNouveauTexte = Replace(monTexte, "'", "''")
    la valeur suivante :
    ''ASP c'' est chouette''
    (avec que des apostrophes)

    Comme vous vous en doutez, impossible d'insérer une telle valeur dans ma base, je me fais jeter avec un message du type
    opérateur absent dans l'expression '''ASP c'' est chouette'''
    (là encore, il n'y a que des apostrophes)

    Je recherche donc le moyen de ne remplacer que les apostrophes ayant bel et bien été saisies par l'utilisateur, et pas celles que le passage de "formulaire.asp" à "maj.asp" rajoute de lui-même...

    Voila, j'espère que j'ai été assez clair et précis, ce qui n'est pas toujours facile !

    Merci pour vos réponses et bonnes idées, je suis vraiment en souci... et évidemment, je suis super-pressé !

    laMémé

  2. #2
    Membre à l'essai
    Inscrit en
    Juin 2002
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 19
    Points : 16
    Points
    16
    Par défaut
    et si tu mettais un \ quand tu remplace ??
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    replace(xxxxx,"'","\'")
    non ?
    joe

  3. #3
    Candidat au Club
    Inscrit en
    Avril 2005
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 3
    Points : 4
    Points
    4
    Par défaut
    l'idée est pas mauvaise, mais en fait, c'est la première chose que j'ai essayé... sans succès !

    Toutefois, il semble que je sois sur une piste qui fonctionne mieux :
    j'ai depuis codé une fonction qui double tous les apostrophes qui ne sont ni le premier, ni le dernier caractère de la valeur que je récumère (et souhaite insérer).
    Evidemment, c'est un peu bourrin, mais ca marche.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    'Fonction doublant toutes les apostrophes contenues à l'intérieur d'une chaîne de caractères, 
    '   mais pas la première ni la dernière ('ASP c'est bien' devient 'ASP c''est bien')
    function getDoubleAnyQuote(texte)
        Dim MaString
        MaString = texte
        MaString = Left(MaString, Len(MaString) -1)    'MaString devrait contenir "ASP c'est bien'"
        MaString = Right(MaString, Len(MaString) -1)    'MaString devrait contenir "ASP c'est bien"
        MaString = "'" & Replace(MaString, "'", "''") & "'"   'MaString devrait contenir "'ASP c''est bien'"
        getDoubleAnyQuote = MaString
    end function
    Il me reste à vérifier que ça fonctionne partout, mais les premiers tests semblent satisfaisants !

    Merci quand même du tuyau !

    laMémé

  4. #4
    Expert éminent
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Points : 9 506
    Points
    9 506
    Par défaut
    Salut,

    Et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    server.HTMLEncode(request.Form("text"))
    ?

    A+
    "Winter is coming" (ma nouvelle page d'accueil)

  5. #5
    Membre averti Avatar de pmboutteau
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    601
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Santé

    Informations forums :
    Inscription : Février 2005
    Messages : 601
    Points : 420
    Points
    420
    Par défaut
    ben moi j'utilise une fonction que j'appelle remplacer par exemple e je l'applique ensuite au variable concernée.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <SCRIPT LANGUAGE=VBScript RUNAT=Server>
     
    function remplacer(texte)
     
    texte=Replace(texte,">","&gt")
    texte=Replace(texte,"'","''")
    texte=Replace(texte,"<","&lt")
    remplacer = texte
    end function
    </script>
    çà marche Nickel
    ours ours !! Au début elle est froide mais après elle est bonne!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème avec les apostrophes dans le sql en VBA
    Par cyrilboulan dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 14/03/2017, 10h11
  2. problème avec les apostrophes
    Par dimi2 dans le forum Langage
    Réponses: 7
    Dernier message: 17/07/2008, 12h20
  3. Problème avec les apostrophes
    Par alizea77 dans le forum Langage
    Réponses: 2
    Dernier message: 14/05/2008, 12h08
  4. Problème avec les apostrophes
    Par loverdev dans le forum VB.NET
    Réponses: 7
    Dernier message: 28/08/2007, 11h30
  5. Problème avec les apostrophes
    Par misterbillyboy dans le forum Requêtes
    Réponses: 2
    Dernier message: 15/07/2003, 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