Initialiser une session dans un onclick

Résolu/Fermé
Léa - Modifié par Léa le 13/03/2014 à 11:30
 Léa - 14 mars 2014 à 15:02
Bonjour,

Je débute en php et je me demandais, si c'était possible d'initialiser $_SESSION['lang'] lorsqu'on clique sur le lien.

Qui ressemblerait à cela :

<div id="lang">
<a href="#" id="langfr" onclick="<?php $_SESSION['lang']='FR'?>">FR</a>
<a href="#" id="langen" onclick="<?php $_SESSION['lang']='EN'?>">EN</a>
</div>

Mais cela ne fonctionne pas.

3 réponses

flokocha Messages postés 1510 Date d'inscription lundi 8 mars 2004 Statut Membre Dernière intervention 10 octobre 2015 280
13 mars 2014 à 11:56
onclick est un événement déclenché côté client (navigateur), tandis que ton php est interprété côté serveur. Tu ne peux pas demander à ton client d'assigner une variable côté serveur, alors que le serveur a fini de générer ta page.

Il faut donc que ton onclick déclenche un nouvel appel au serveur. Soit par l'intermédiaire d'un appel classique à une nouvelle page, ou soit via une requête de type ajax.
1
A mon avis cela ne fonctionne pas à cause du lien qui n'existe pas dans le href, as-tu essayer de le remplacer par une page existante ?

Sinon, AJAX.
0
Alors j'ai fait des recherches sur ajax, et j'ai trouvé qu'il fallait faire cela :

<script type="text/javascript">
jQuery().ready(function(){
$("#langfr").click(function(){
$.ajax({
type: "POST",
url: "/lib/lang/langfr.php",
}).done(function(e) {
location.reload();
});
});
$("#langen").click(function(){
$.ajax({
type: "POST",
url: "/lib/lang/langen.php",
}).done(function(e) {
location.reload();
});
});
});
</script>

<div id="lang">
<a href="#" id="langfr">FR</a>
<a href="#" id="langen">EN</a>
</div>

//---------langfr.php-----------
<?php
$_SESSION['lang']='FR';
?>

//---------langen.php-----------
<?php
$_SESSION['lang']='EN';
?>

Mais, cela n'a pas l'air de fonctionner ....
0
Tu as la bibliothèque jQuery d'installé ?
0
flokocha Messages postés 1510 Date d'inscription lundi 8 mars 2004 Statut Membre Dernière intervention 10 octobre 2015 280
13 mars 2014 à 13:56
Tu dois préalablement faire un session_start() dans tes fichiers langfr.php et langen.php.

Au passage, tu aurais pu ne créer qu'un seul fichier et lui passer la langue voulue en argument.
0
Je ne l'ai pas installé explicitement. J'ai juste mis le fichier jquery.js dans un répertoire et j'ai fait un lien dessus au tout début de mon code:
<script src="lib/js/jquery.js" type="text/javascript"></script>
0
j'ai ajouté session_start() avant d'initialiser $_SESSION['lang'] mais cela ne fonctionne toujours pas
0
flokocha Messages postés 1510 Date d'inscription lundi 8 mars 2004 Statut Membre Dernière intervention 10 octobre 2015 280
13 mars 2014 à 14:28
Après ça dépend ce que tu souhaites obtenir comme résultat. En procédant ainsi le résultat n'est pas visible puisque ta page n'a pas été regénérée. Et je suppose que le contenu de cette variable de session influe sur le contenu de la page en elle-même...
0