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 :

chr(34) et chr(39)


Sujet :

ASP

  1. #1
    Membre régulier Avatar de nicolb
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 184
    Points : 103
    Points
    103
    Par défaut chr(34) et chr(39)
    Bonjour.

    Je me prends la tête depuis plusieurs heures sur un petit soucis de quotes.

    Sur une page "formulaire.htm", j'ai un input de type texte dans lequel l'internaute peut rentrer un nom.

    Sur ma page "traitement.asp", j'utilise cet input comme critère de recherche dans une requête sql :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    name=request.form("nom")
    sql="select * from table1 where nom='"&name&"'"
    Avec cette syntaxe, cela ne fonctionne pas si l'internaute entre un nom contenant un apostrophe comme "l'école"

    J'ai essayé d'autres syntaxe du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sql="select * from table1 where nom="&chr(34)&name&chr(34)&"
    Mais vbscript me retourne soit une erreur de syntaxe soit une erreur d'ouverture du recordset.

    J'ai également essayé d'utiliser la fonction replace pour définir ma variable name (en remplaçant les apostrophes par &#39), et la, pas de problème pour utiliser la requête sql, mais seulement lorsque je teste la présence de doublons dans la base, il ne les trouvent pas : la valeur passée à la bdd sera l&#chr39école, mais la valeur qu'elle renverra pour le test (celle stockée dans le champ) sera l'école... D'où problème lorsque je teste la présence de doublons avec ma variable sql...

    J'ai également l'impression que la syntaxe sans variable
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sql="select * from table1 where nom="&chr(34)&"l'école"&chr(34)
    qui fonctionne sous Access et renvoie (select * from table1 where nom="l'école") ne fonctionne pas avec vbscript.

    Quelqu'un aurait-il une idée, car je ne veux pas empêcher l'internaute de saisir des noms avec apostrophe, mais je ne peux tolérer les doublons...
    Quel syntaxe utiliser pour ma variable sql ???

    Merci d'avance.

  2. #2
    LEK
    LEK est déconnecté
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    715
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 715
    Points : 470
    Points
    470
    Par défaut
    A mon avis la bonne méthode reste d'utiliser la fonction Replace mais c'est dans les arguments que tu t'es trompé. Tu aurais du remplacer la simple côte par une double côte comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    name= Replace (request.form("nom") ,"'","''")
    sql="select * from table1 where nom='"&name&"'"
    .
    Je viens de faire le test sur SQL server et sur Access : normalement ça devrait fonctionné.

  3. #3
    LEK
    LEK est déconnecté
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    715
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 715
    Points : 470
    Points
    470
    Par défaut
    Petit ajout si tu trouves plus lisibles avec la table ASCII, cela te donnes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    name= Replace(request.form("nom") , chr(39), chr(39) & chr(39))
    sql="select * from table1 where nom='"&name&"'"
    Voilà.

  4. #4
    Membre régulier Avatar de nicolb
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 184
    Points : 103
    Points
    103
    Par défaut
    Effectivement, ça marche avec cette syntaxe

    Merci beaucoup LEK.

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

Discussions similaires

  1. Remplacer chr(10) et chr(13) par des espaces
    Par juju77 dans le forum Général Java
    Réponses: 7
    Dernier message: 15/06/2012, 09h19
  2. [TP7] Fontes au format CHR
    Par irios dans le forum Turbo Pascal
    Réponses: 6
    Dernier message: 09/03/2005, 21h53
  3. Réponses: 2
    Dernier message: 28/01/2005, 06h43
  4. Réponses: 10
    Dernier message: 24/01/2005, 17h00
  5. problème de chr(39)
    Par Pierre FORAZ dans le forum XMLRAD
    Réponses: 10
    Dernier message: 11/10/2004, 11h39

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