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

Langage PHP Discussion :

Quote et double quote


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 64
    Points : 48
    Points
    48
    Par défaut Quote et double quote
    Je suis sur ce sujet a déjà été abordé
    Mais j'ai un petit problème
    J'ai un champ input mais quand on met des apostrophes, rien n'est enregistré dans la base
    voila mon code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <tr><td>nom </td>
    <TD><INPUT 
    <?php 
     
    echo "value='".$row["sinom"].'";
    
    ?> 
     
    type=text size=32 name=sinom></TD>
    </tr>
    J'ai essayé addslashes() mais ca marche pas
    J'ai donc eu l'idée de changer les ' par "
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "value=\"".$row["sinom"].\"";
    Maintenant je peux mettre des l'a mais si je fait "la" ca marche plus

    Question avez vous une méthode simple pour mettre des ' et des " dans mon input ?

  2. #2
    Membre expérimenté
    Avatar de Rakken
    Homme Profil pro
    Inscrit en
    Août 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 257
    Points : 1 341
    Points
    1 341
    Par défaut
    Fait attention quand tu melanges du php et du html. On s'y perd vite, surtout quand on a pas l'habitude. Fait aussi attention à l'intendation, un code clair, c'est la moitié des bugs qu'on repère directement.

    Voila ton code réécrit. Normalement, ca devrait marcher.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <tr>
      <td>nom</td>
      <td><input value="<?php echo $row['sinom']?>" type="text" size="32" name="sinom"></td>
    </tr>
     
    ?>
    Si tu fait attention à ta manière d'écrire, en ne mélangeant pas tout, tu vas y gagner en lisibilité et en rapidité et tu vas éviter une bonne partie des problèmes de ' et autres ".
    Rakken

    Oneira, un monde imaginaire d'Heroic Fantasy.

    Parce que la présomption d'innocence est un des fondements de notre pays et qu'elle doit le rester, dans tous les domaines : http://www.laquadrature.net/

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 64
    Points : 48
    Points
    48
    Par défaut
    Merci pour la réponse hyper rapide mais ca ne marche pas encore
    Dans mon champs je met et je n'ai pas le "d" qui réapparait !
    Par contre dans ma base c'est bon !
    Je reteste mon ancien code il me redonne la meme chose !

    Je crois que c'est juste à l'affichage il manquerait peut être une fonction

  4. #4
    Membre éprouvé
    Avatar de viviboss
    Profil pro
    Inscrit en
    Août 2006
    Messages
    943
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Août 2006
    Messages : 943
    Points : 1 248
    Points
    1 248
    Par défaut
    Pourtant ca devrait marcher, mais finit ton echo avec un ";" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <tr>
      <td>nom</td>
      <td><input value="<?php echo $row['sinom']; ?>" type="text" size="32" name="sinom">
    </td>
    </tr>
    Veni Vidi Vici
    -------------------------
    Mes articles : developpez.com ou bien vbview.net
    -------------------------
    Et SURTOUT ne pas oublier la bible PHP : --> php_manual_fr.chm!!!
    Et aussi : --> pear_manual_fr.chm!!!

    Ou encore : --> Les tutoriaux & cours PHP de Développez.com
    -------------------------

  5. #5
    Membre expérimenté
    Avatar de Rakken
    Homme Profil pro
    Inscrit en
    Août 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 257
    Points : 1 341
    Points
    1 341
    Par défaut
    Quand tu as un problème de ce genre, il faut toujours penser a regarder le code html qui est généré.
    Si dans ton champs tu as ["d"], alors le code html va ressembler a
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input value=""d"" type="text" size="32" name="sinom">
    Et la, tu vois qu'il y a un problème, parce que c'est interprété comme value="" donc rien.
    Dans ce genre de cas, tu as plusieurs solutions. Soit tu utilises des addslaches/stripslache pour neutraliser les ", soit tu utilises htmlentities et html_entities_decode. Pour ma part, j'ai une légère préférence pour la seconde solution tant que tu ne dois pas faire de recherche dans ta base sur ton champ (requete like).
    Donc avant d'enregistrer ton champ tu lui appliques :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $mavariable = htmlentities($mavariable , ENT_QUOTES);
    Ca va transformer tous les caractères "bizarres" en code html.

    Bon les toutes premieres fois qu'on s'en sert, ca necessiste quelques ajustement (quand est-ce qu'on encode ? quand faut-il décoder ?) mais au final, ca marche bien.

    ps : Bien vu le ; Ca marche aussi sans, mais c'est plus propre avec.
    Rakken

    Oneira, un monde imaginaire d'Heroic Fantasy.

    Parce que la présomption d'innocence est un des fondements de notre pays et qu'elle doit le rester, dans tous les domaines : http://www.laquadrature.net/

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 64
    Points : 48
    Points
    48
    Par défaut
    Merci à tous les deux !
    finalement j'ai choisi htmlentities C'est vrai qu'il faudra penser à décoder au cas ou.
    A propos du ; qui manquait c'est vrai que je ne l'ai pas vu et ce qui me surprends, je n'ai pas eu d'erreur de syntaxe mais même en le rajoutant c'est pareil, à l'affichage il se perd ! Peut être une question de version de php ?!?

    Le htmlentities me convient un grand MERCI !
    Oups j'ai cliqué delestage !

  7. #7
    Membre éprouvé
    Avatar de viviboss
    Profil pro
    Inscrit en
    Août 2006
    Messages
    943
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Août 2006
    Messages : 943
    Points : 1 248
    Points
    1 248
    Par défaut
    Nouvelle habitude à prendre : les MAGICQUOTES à off !!!!
    Veni Vidi Vici
    -------------------------
    Mes articles : developpez.com ou bien vbview.net
    -------------------------
    Et SURTOUT ne pas oublier la bible PHP : --> php_manual_fr.chm!!!
    Et aussi : --> pear_manual_fr.chm!!!

    Ou encore : --> Les tutoriaux & cours PHP de Développez.com
    -------------------------

  8. #8
    Membre expérimenté
    Avatar de Rakken
    Homme Profil pro
    Inscrit en
    Août 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 257
    Points : 1 341
    Points
    1 341
    Par défaut
    Non, il est facultatif.
    Le ";" sert a dire a l'interpréteur php que la ligne en cours est finie. Mais dans la mesure ou ton echo est entre <?php et ?> et qu'il n'y a aucune autre instruction, l'interpreteur est gentil et le laisse passer sans erreur.

    Bref, ca marche sans, mais avec, c'est plus propre. Et les magicquotes a off, c'est bien ;-)

    Généralement pour mes projets ce que je fait, c'est une fonction genre "protect_str" qui va, suivant les projets, echaper les quote et double quote, ou les passer en htmlentities, le tout en vérifiant qu'il n'y a pas de conflit avec magic_quote a on ou off (faire un add_slaches avec un magic_quote a on, c'est se retrouver avec des \' partout partout ^^)
    Rakken

    Oneira, un monde imaginaire d'Heroic Fantasy.

    Parce que la présomption d'innocence est un des fondements de notre pays et qu'elle doit le rester, dans tous les domaines : http://www.laquadrature.net/

  9. #9
    Membre éprouvé
    Avatar de viviboss
    Profil pro
    Inscrit en
    Août 2006
    Messages
    943
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Août 2006
    Messages : 943
    Points : 1 248
    Points
    1 248
    Par défaut
    Citation Envoyé par Rakken
    Non, il est facultatif.
    Le ";" sert a dire a l'interpréteur php que la ligne en cours est finie. Mais dans la mesure ou ton echo est entre <?php et ?> et qu'il n'y a aucune autre instruction, l'interpreteur est gentil et le laisse passer sans erreur.

    Bref, ca marche sans, mais avec, c'est plus propre. Et les magicquotes a off, c'est bien ;-)

    Généralement pour mes projets ce que je fait, c'est une fonction genre "protect_str" qui va, suivant les projets, echaper les quote et double quote, ou les passer en htmlentities, le tout en vérifiant qu'il n'y a pas de conflit avec magic_quote a on ou off (faire un add_slaches avec un magic_quote a on, c'est se retrouver avec des \' partout partout ^^)
    Ca c'est une bonne habitude de programmation !!!!
    Veni Vidi Vici
    -------------------------
    Mes articles : developpez.com ou bien vbview.net
    -------------------------
    Et SURTOUT ne pas oublier la bible PHP : --> php_manual_fr.chm!!!
    Et aussi : --> pear_manual_fr.chm!!!

    Ou encore : --> Les tutoriaux & cours PHP de Développez.com
    -------------------------

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

Discussions similaires

  1. Quote et double quote, eternel souci
    Par tusssss dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 14/10/2008, 11h31
  2. Insertion quote et double quote
    Par Ebisu dans le forum SQL*Loader
    Réponses: 8
    Dernier message: 08/10/2008, 17h41
  3. quote et double quote
    Par ensisoft dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 13/05/2008, 18h16
  4. Requete avec quote et double quote
    Par swissmade dans le forum VBA Access
    Réponses: 2
    Dernier message: 20/08/2007, 15h01

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