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 une variable de session (envoyée par un POST) qui reviens à sa valeur précédente


Sujet :

Langage PHP

  1. #1
    Candidat au Club
    Femme Profil pro
    Ergonome
    Inscrit en
    Octobre 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Ergonome
    Secteur : Transports

    Informations forums :
    Inscription : Octobre 2009
    Messages : 5
    Points : 4
    Points
    4
    Par défaut Apostrophe dans une variable de session (envoyée par un POST) qui reviens à sa valeur précédente
    Bonjour à tous,

    Je rencontre un problème dans la gestion de mes variables de session lorsque la valeur mémorisée
    comporte des Apostrophes.. pourtant, je ne comprend pas la différence de comportement
    et malgré l'affichage avec des ECHO dans tous les sens.. je ne trouve pas mon erreur...

    Voila ce que je fais:
    J'ai construit une série de liens de recherche par région avec des infos de régions qui se trouvent en BDD:
    Exemple: Drôme[id=1] et Côtes-d'Armor [id=4533]
    exemple de lien construit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    index.php?/region/4533&country=1&state=4533 (je les passe donc en GET)
    Lorsque l'utilisateur clic sur mon lien, je mémorise la région qu'il a choisi:
    je mémorise en session, l'identifiant de région et son libelle...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $page['state'] = 0;
      if (isset($_GET['state'])){
        $page['state'] = $_GET['state'];
        setcookie('state', $page['state'], (time() + 3600));
        $_SESSION['state'] = $page['state'];                        //l'identifiant de mon département
        $_SESSION['state_name'] = get_state_name($page['state']) ;  //le libelle de mon département
      }
    Ensuite, j'affiche le choix de mon utilisateur à l'écran... (en fait il choisi la mise en place de filtre de recherche par région)
    Je passe par un template, je relis ma variable de $_SESSION pour afficher le libelle pour l'utilisateur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $bstate = (isset($_SESSION['state']))? $_SESSION['state'] :0; //affichage du filtre ou non
    if ($bstate>0){  
      //  envoi de l'identifiant du departement et son libelle au template
      $template->assign_block_vars(
        'searches.Selectedstate',
        array(
          'bstate' => $bstate,              //= id du departement 
          'name' => $_SESSION['state_name'] //= libelle du departement
          )
        );
    }
    Dans la page HTML, j'ai
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    <form method="post" action="{searches.Selectedregion.F_SIMPLESEARCH}" id="regionfilter"> 
        <input type=text name="simplesearch_words" value="{searches.simplesearch.words}">
        <input type="submit" name="submit" value="{lang:submit}">       
        Regions
        <ul style="list-style-type:none; margin-top:0px;">                 
            <li>
                <input type="submit" name = "nocountry" value="x">                                                 
                {lang:Country}: {searches.Selectedcountry.name} ({searches.Selectedcountry.bcountry})
            </li>
            <li>
                <input type="submit" name = "nostate" value="x">                         
                {lang:State}: {searches.Selectedstate.name} ({searches.Selectedstate.bstate})
            </li> 
        </ul> 
    </form>

    à l'affichage j'ai bien mes boutons pour supprimer mes filtres de region:
    je vois ça... ( le |x| symbolise le bouton que j'ai mis à l'écran)

    Regions
    |x| Pays: France (1)
    |x| Département: Côtes-d'Armor (4533)

    On dirait que ça marche mais...
    si j'utilise mon bouton name="submit" (le premier) =>

    Si l'utilisateur avait choisi France/Drome puis France/Côtes-d'Armor
    => C'est la drôme qui s'affiche à nouveau mon affichage devient:

    Regions
    |x| Pays: France (1)
    |x| Département: Drôme (1)

    Si l'utilisateur a directement choisi France/Côtes-d'Armor
    => C'est mon filtre département qui disparait

    Regions
    |x| Pays: France (1)

    J'ai cherché sur le forum s'il y avait un truc à faire pour la variable
    contenant des apostrophes, mais je ne trouve pas ce qui pourrait corriger...

    Pouvez vous me donner un p'tit coup de main?
    Merci d'avance à tous le monde!

    Laurence

    PS: petite précision: le session_start(); est fait au login de l'utilisateur

  2. #2
    Candidat au Club
    Femme Profil pro
    Ergonome
    Inscrit en
    Octobre 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Ergonome
    Secteur : Transports

    Informations forums :
    Inscription : Octobre 2009
    Messages : 5
    Points : 4
    Points
    4
    Par défaut
    Bonjour à tous,

    Comme je n'avais pas de réponses ce matin, j'ai supposé que mon problème vous avait laissé très perplexe...
    Donc, ne trouvant pas de solution, j'ai décidé de ne plus mémoriser mon libelle dans la variable $_SESSION...

    J'ai commenté ma ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $_SESSION['state_name'] = get_state_name($page['state'])
    et transformé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    'name' => $_SESSION['state_name'] //= libelle du departement
    en
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    'name' => get_state_name($_SESSION['state']) //$_SESSION['state_name']
    Ainsi, je calcul chaque fois le nom à partir de l'identifiant pour l'affichage...
    le comportement ne change plus... et je construit ma requete SQL avec l'id ...
    ça donne une requete plus complexe car en réalité, ce sont des régions qui proviennent de champs IPTC de photographies...
    donc, je n'ai que des libelles à la base... pas d'id.. ==> je déduisais l'id de ma région avec un id d'image..

    à présent :
    je cherche les images dont le libelle de région est le même que le libelle de l'image d'id = "mon identifiant d'image"
    au lieu de
    je cherche les images dont le libelle de région = "mon libelle"


    Merci à vous tous d'avoir regardé la question. Même si vous n'avez pas trouvé le pourquoi...
    Je vais continuer à me demander pourquoi la mémorisation du libelle posait problème.
    ça faisait 2 jours entier à faire des traces avec ECHO sans succès...

    Quand on trouve pas, faut changer la méthode !

    Merci quand même pour votre temps de lecture

    Laurence

Discussions similaires

  1. Réponses: 6
    Dernier message: 30/09/2006, 15h14
  2. Réponses: 3
    Dernier message: 15/07/2006, 13h22
  3. lire une donnée dans une variable de session
    Par pblb62 dans le forum Langage
    Réponses: 8
    Dernier message: 21/03/2006, 14h23
  4. Réponses: 19
    Dernier message: 02/02/2006, 23h30
  5. [C#] ArrayList dans une variable de session ?
    Par Oberown dans le forum ASP.NET
    Réponses: 1
    Dernier message: 12/12/2005, 15h50

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