|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Membre régulier
![]() Inscription : décembre 2006 Messages : 493 ![]() |
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 :
Merci d'avance. |
||
|
|
00
|
|
|
#2 | ||
|
Expert Confirmé
![]() Inscription : mars 2005 Messages : 2 815 ![]() |
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 :
__________________
Un problème exposé clairement est déjà à moitié résolu Keep It Smart and Simple |
||
|
|
00
|
|
|
#3 |
|
Membre régulier
![]() Inscription : décembre 2006 Messages : 493 ![]() |
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 ? |
|
|
00
|
|
|
#4 |
![]() ![]() Développeur Web Inscription : février 2008 Messages : 3 301 ![]() |
bingo.
|
|
|
00
|
|
|
#5 | |
|
Expert Confirmé
![]() Inscription : mars 2005 Messages : 2 815 ![]() |
Citation:
__________________
Un problème exposé clairement est déjà à moitié résolu Keep It Smart and Simple |
|
|
|
00
|
|
|
#6 |
|
Membre régulier
![]() Inscription : décembre 2006 Messages : 493 ![]() |
Ok, ce sera ajax alors car j'aimerai ne pas avoir à recharger la page !
Je vais tenter ça. |
|
|
00
|
|
|
#7 | |
|
Expert Confirmé
![]() Inscription : janvier 2010 Messages : 2 695 ![]() |
Citation:
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 ?
__________________
Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20 Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra] |
|
|
|
10
|
|
|
#8 | ||||
|
Membre régulier
![]() Inscription : décembre 2006 Messages : 493 ![]() |
En fait j'utilise un script jquery qui permet de modifier en ajax le contenu d'un texte lors d'un clic sur le langage (ChangeLang). Donc ça ça fonctionne, mais lors de la navigation dans les liens, le langage sélectionné n'est pas conservé et la nouvelle page s'affiche dans la langue par défaut. C'est pour ça que j'essaye en plus d'y associer une variable de session.
Voici le code utilisé dans mon html : Code :
Code :
|
||||
|
|
00
|
|
|
#9 | |
|
Expert Confirmé
![]() Inscription : janvier 2010 Messages : 2 695 ![]() |
Citation:
Il faut donc modifier la session pour que la fois d'après (prochaine page que demandera l'utilisateur) le contenu soit en rapport avec la nouvelle langue, en rapport avec cette variable de session ($_SESSION['language']). Pour modifier une variable de session (language) en Ajax il faut que l'URL + la langue en paramètre pointe vers une page Php (genre changeLang.php) qui s'occupera de le faire. Après, que tu souhaite que le contenu actuel soit quand même modifié (tout ou en partie, peu importe), ce que fait ton code actuellement, pourquoi pas. Mais l'URL pointe sur un fichier XML (language.xml), ceci ne te donne pas la possibilité de faire du Php. Dans ce cas là, il faut donc bien voir qu'il y a 2 choses différentes : Modifier la session pour la navigation futur + modifier le contenu actuel. Enfin, si j'ai bien compris le truc.
__________________
Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20 Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra] |
|
|
|
00
|
|
|
#10 |
|
Membre régulier
![]() Inscription : décembre 2006 Messages : 493 ![]() |
Ce que je tente de faire à l'heure actuelle, c'est de rajouter au code qui gère déjà le contenu EN-FR via AJAX la partie qui modifie la variable de session.
Car lord du clic sur mes éléments #lang-en et #lang-fr, le contenu de la page change déjà via AJAX, ça ça fonctionne. |
|
|
00
|
|
|
#11 | ||||||
|
Membre régulier
![]() Inscription : décembre 2006 Messages : 493 ![]() |
Bonjour, j'ai réussi à modifié ma variable de session en AJAX, un alert m'en donne bien la preuve, mais apparemment elle ne reste pas en mémoire !
Mon fichier index.php Code :
Code :
Code :
Une idée d'où vient mon erreur ? |
||||||
|
|
00
|
|
|
#12 |
![]() ![]() Développeuse PHP/Java Inscription : avril 2007 Messages : 3 656 ![]() |
Il ne manquerait pas un session_start() dans ton fichier language.php ?
__________________
Modératrice PHP Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur) Pour afficher votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) |
|
|
00
|
|
|
#13 |
|
Membre régulier
![]() Inscription : décembre 2006 Messages : 493 ![]() |
effectivement, à force de me creuser la tête, j'en ai fait une erreur de débutant !!!!Merci beaucoup, ça fonctionne maintenant ! |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com