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 :

Apostrophe dans les listes d'options


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Inscrit en
    Mai 2010
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 31
    Points : 19
    Points
    19
    Par défaut Apostrophe dans les listes d'options
    Bonjour,

    En html avec programmation en PHP
    j'ai une liste d'options dans un formulaire où dont certains items contiennent des apostrophes.
    Au niveau de l'affichage tout est correct.
    Dans la fonction php appelée par ce formulaire je récupère les champs et sélections à l'aide de $_POST[nom du champ ou de la sélection]
    Aucun problème sauf si l'option value sélectionnée contient des apostrophes.
    Dans ce cas ce que je récupère dans $_POST est tronqué avant la première apostrophe.
    Avec d'autres input ça marche très bien (ex champ texte)

    Que faire ?

    (en attendant je remplace les ' par des °)

    merci d'avance
    alainsm

  2. #2
    Membre chevronné Avatar de nosferapti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    1 157
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 157
    Points : 1 895
    Points
    1 895
    Par défaut
    montre nous le code que tu utilises pour construire la liste déroulante

  3. #3
    Membre à l'essai
    Inscrit en
    Mai 2010
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 31
    Points : 19
    Points
    19
    Par défaut
    Citation Envoyé par nosferapti Voir le message
    montre nous le code que tu utilises pour construire la liste déroulante
    le voici (les items ont été d'abord stockés dans $_SESSION une fois pour toutes):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <select name=document size=4 v:shapes="_x0000_s192430">
    <?php
    {
    $i = 1;
    while($l = $_SESSION['eltabledoc'.$i] )
    {
        echo "<option value='". $l ."'>$l</option>";
        $_SESSION['eltabledoc'.$i] = "";
        $i++;
    }
     
    }
    ?> 
    </select>

  4. #4
    jnore
    Invité(e)
    Par défaut
    Bonsoir,

    Essaie 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
     
     
    <select name=document size=4 v:shapes="_x0000_s192430">
    <?php
    {
    $i = 1;
    while($l = $_SESSION['eltabledoc'.$i] )
        {
        echo '<option value="'.addslashes($l).'">'.$l.'</option>';
        $_SESSION['eltabledoc'.$i] = "";
        $i++;
        }
     
    }
    ?> 
    </select>
    Tout d'abord les valeurs se mettent entre guillemets, puis antislashes sur la valeur pour gerer les quotes/guillemets

  5. #5
    Membre à l'essai
    Inscrit en
    Mai 2010
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 31
    Points : 19
    Points
    19
    Par défaut
    Citation Envoyé par jnore Voir le message
    Bonsoir,

    Essaie 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
     
     
    <select name=document size=4 v:shapes="_x0000_s192430">
    <?php
    {
    $i = 1;
    while($l = $_SESSION['eltabledoc'.$i] )
        {
        echo '<option value="'.addslashes($l).'">'.$l.'</option>';
        $_SESSION['eltabledoc'.$i] = "";
        $i++;
        }
     
    }
    ?> 
    </select>
    Tout d'abord les valeurs se mettent entre guillemets, puis antislashes sur la valeur pour gerer les quotes/guillemets



    ça ne fonctionne pas on obtient dans $_POST l'item tronqué mais complété par 2 antislashes ou 1 seul si on fait un stripslashes sur $_POST[...] pour l'afficher en trace
    je n'ai ce souci qu'avec les option value
    merci de ta bonne volonté
    alainsm

  6. #6
    jnore
    Invité(e)
    Par défaut
    et si avant ton select tu fait un:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    var_dump($_SESSION);
    ca donne quoi?
    tes infos sont elle tronquées?

  7. #7
    Membre à l'essai
    Inscrit en
    Mai 2010
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 31
    Points : 19
    Points
    19
    Par défaut
    Citation Envoyé par jnore Voir le message
    et si avant ton select tu fait un:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    var_dump($_SESSION);
    ca donne quoi?
    tes infos sont elle tronquées?
    tout est bon comme je te le disais :

    une partie du var_dump :
    ["eltabledoc18"]=> &string(44) "Passe à l'action : propositions d'animations" ["eltabledoc19"]=> &string(35) "Accès à l'eau et à l'assainissement"

  8. #8
    jnore
    Invité(e)
    Par défaut
    Peux-tu nous envoyer le code html généré pour le select, stp qu'on regarde?

  9. #9
    Membre à l'essai
    Inscrit en
    Mai 2010
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 31
    Points : 19
    Points
    19
    Par défaut
    Citation Envoyé par jnore Voir le message
    Peux-tu nous envoyer le code html généré pour le select, stp qu'on regarde?
    j'ai joint le code source de la page

  10. #10
    Membre à l'essai
    Inscrit en
    Mai 2010
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 31
    Points : 19
    Points
    19
    Par défaut
    Citation Envoyé par alainsm Voir le message
    j'ai joint le code source de la page
    une précision : le select est en fin de fichier

  11. #11
    Membre chevronné Avatar de nosferapti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    1 157
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 157
    Points : 1 895
    Points
    1 895
    Par défaut
    pour produire du code HTML protégé, c'est la fonction http://php.net/htmlspecialchars qu'il faut utiliser :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <select name=document size=4 v:shapes="_x0000_s192430">
    <?php
    {
    $i = 1;
    while($l = $_SESSION['eltabledoc'.$i] )
        {
        echo '<option value="' . htmlspecialchars($l, ENT_COMPAT, 'UTF-8') . '">'.$l.'</option>';
        $_SESSION['eltabledoc'.$i] = '';
        $i++;
        }
     
    }
    ?> 
    </select>

  12. #12
    Membre à l'essai
    Inscrit en
    Mai 2010
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 31
    Points : 19
    Points
    19
    Par défaut
    Citation Envoyé par nosferapti Voir le message
    pour produire du code HTML protégé, c'est la fonction http://php.net/htmlspecialchars qu'il faut utiliser :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <select name=document size=4 v:shapes="_x0000_s192430">
    <?php
    {
    $i = 1;
    while($l = $_SESSION['eltabledoc'.$i] )
        {
        echo '<option value="' . htmlspecialchars($l, ENT_COMPAT, 'UTF-8') . '">'.$l.'</option>';
        $_SESSION['eltabledoc'.$i] = '';
        $i++;
        }
     
    }
    ?> 
    </select>



    pour ne pas mourir idiot pourquoi dans ce cas précis faut-il produire du code HTML protégé ?
    cette liste d'options est le seul cas où j'ai cet ennui bizarre
    merci de votre compréhension

  13. #13
    Membre expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Points : 3 972
    Points
    3 972
    Par défaut
    pour ne pas mourir idiot pourquoi dans ce cas précis faut-il produire du code HTML protégé ?
    Pas protégé, échappé.

    Car il faut transformer les guillemets en entités HTML afin que cela ne tronque pas ton attribut... normal

  14. #14
    Membre à l'essai
    Inscrit en
    Mai 2010
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 31
    Points : 19
    Points
    19
    Par défaut
    Citation Envoyé par alainsm Voir le message
    pour ne pas mourir idiot pourquoi dans ce cas précis faut-il produire du code HTML protégé ?
    cette liste d'options est le seul cas où j'ai cet ennui bizarre
    merci de votre compréhension


    ça marche !
    bravo et mille merci

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

Discussions similaires

  1. Personnalisation des options de documents dans les listes
    Par magiczouf dans le forum SharePoint
    Réponses: 3
    Dernier message: 10/03/2008, 18h51
  2. L'apostrophe dans les variable !
    Par leniM dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 31/08/2006, 02h04
  3. [JDBC]les apostrophes dans les chaines
    Par d_token dans le forum JDBC
    Réponses: 4
    Dernier message: 30/08/2006, 13h32
  4. Réponses: 7
    Dernier message: 22/10/2005, 19h20

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