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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mai 2010
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 31
    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 Expert 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
    Par défaut
    montre nous le code que tu utilises pour construire la liste déroulante

  3. #3
    Membre averti
    Inscrit en
    Mai 2010
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 31
    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 averti
    Inscrit en
    Mai 2010
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 31
    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 Expert 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
    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>

  8. #8
    Membre averti
    Inscrit en
    Mai 2010
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 31
    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

+ 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