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
Replace(monTexte, "'", "''")
, et même
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 :
<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 :
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 :
1 2
| Dim monNouveauTexte
monNouveauTexte = Replace(texteSaisi, "'", "''") |
entraîne une modification de TOUTES les apostrophes, et du coup, j'obtiens
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
monNouveauTexte = Replace(monTexte, "'", "''")
la valeur suivante :
(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é
Partager