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 :

Modifier une variable de session sur onclick


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    581
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 581
    Par défaut Modifier une variable de session sur onclick
    Bonjour, je suis en train de me prendre la tête sur un problème qui à la base me semblait assez simple : modifier le contenu d'une variable de session lors du clic sur un href !!

    Début de page, ouverture de la session puis assignation d'une valeur à la variable de session si celle-ci n'existe pas. Puis, deux liens href, avec sur le onclick la modification de la variable.

    Or il s'avère lorsque je fais un echo, que la variable prend la dernière valeur lue, même si le onclick n'est pas réalisé.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?php
    session_start();
    if (!isset($_SESSION['language'])) { $_SESSION['language']="en"; }
    echo "Langue1 : ".$_SESSION['language'];
    ?>
     
    <a href="#" id="lang-en" onclick="<?php $_SESSION['language']='en'; ?>"><img src="img/en.jpg" width="16px" height="11px" border="0" class="lang-en" /></a>
    <a href="#" id="lang-fr" onclick="<?php $_SESSION['language']='fr'; ?>"><img src="img/fr.jpg" width="16px" height="11px" border="0" class="lang-fr" /></a>
     
    <?php echo2 "Langue : ".$_SESSION['language']; ?>
    Le echo1 m'indique bien "en", mais le echo2 m'indique "fr". Le php dans le onclick est interprété même sans que l'action ait lieu. Quel est le problème ?

    Merci d'avance.

  2. #2
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 325
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 325
    Billets dans le blog
    17
    Par défaut
    Il ne faut pas perdre de vue que PHP est exécuté côté serveur, JS côté client.

    Ton script PHP délivre la page suivante (fais un "afficher la source" de ta page web si tu as un doute) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Langue1 : en
     
    <a href="#" id="lang-en" onclick=""><img src="img/en.jpg" width="16px" height="11px" border="0" class="lang-en" /></a>
    <a href="#" id="lang-fr" onclick=""><img src="img/fr.jpg" width="16px" height="11px" border="0" class="lang-fr" /></a>
     
    Langue2 : fr
    ... ce qui n'est pas ce que tu souhaites, notamment au niveau du JS, tu en conviendras ;-)

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    581
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 581
    Par défaut
    Ce qui veut dire donc que le php sera toujours interprété au chargement de la page, quelque soit son emplacement et sa "condition" d'exécution, c'est ça ?

    Du coup, ajax ?

  4. #4
    Modérateur
    Avatar de Vil'Coyote
    Homme Profil pro
    Développeur adélia & Web
    Inscrit en
    Février 2008
    Messages
    4 583
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur adélia & Web
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2008
    Messages : 4 583
    Par défaut
    bingo.
    la vie n'est pas cirrhose des foies ...

    Avant de poster un message Rechercher n'est pas qu'une option.
    FAQ Web - Tuto Web

  5. #5
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 325
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 325
    Billets dans le blog
    17
    Par défaut
    Du coup, ajax ?
    Ou tu recharges la page en envoyant les paramètres quivontbien.

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    581
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 581
    Par défaut
    Ok, ce sera ajax alors car j'aimerai ne pas avoir à recharger la page !
    Je vais tenter ça.

  7. #7
    Membre Expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Par défaut
    Citation Envoyé par nicolas2603
    Ok, ce sera ajax alors car j'aimerai ne pas avoir à recharger la page !
    Je vais tenter ça.
    Si l'Ajax se contente de modifier coté serveur la langue (la session en faite), le contenu de la page coté client ne changera pas pour autant.
    Ca sera une fois avoir cliquer sur un lien que cette fois le contenu sera en relation avec la nouvelle langue, ce qui revient presque à recharger la page.

    Je vois d'ici les utilisateurs cliquer 10 fois sur le lien ne voyant pas le contenu changer de langue.
    Ce qui suppose donc qu'au retour de l'Ajax, il faudrait afficher une message (un alert() par exemple) expliquant tout ça.
    Mouais.


    Puis n'oublie pas non plus que les moteurs de cherches n'exécutent pas Javascript (évènement onclick, connait pas), ce qui sous entend que les autres langues risquent d'être jamais parcourues, jamais référencées.

    Faire ça en Ajax, faut voir.

    Puis créer des liens de type <a href="#">, donc sans l'ombre d'une URL est presque qu'un non sens
    Créer des liens sans liens, pourquoi donc créer des liens alors ?

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

Discussions similaires

  1. modifier une variable de session via javascript
    Par DiverSIG dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 02/04/2010, 07h13
  2. modifier une variable de Session
    Par mouvma dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 12/09/2007, 17h20
  3. [JSP] [Javascript] Modifier une variable de Session
    Par fady005 dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 05/04/2007, 11h48
  4. Réponses: 1
    Dernier message: 07/12/2006, 19h02
  5. Réponses: 9
    Dernier message: 03/07/2006, 18h32

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