Initialiser une session dans un onclick

Résolu
Léa -  
 Léa -
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   Statut Membre Dernière intervention   281
 
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
Nexi
 
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
Léa
 
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
Nexi
 
Tu as la bibliothèque jQuery d'installé ?
0
flokocha Messages postés 1510 Date d'inscription   Statut Membre Dernière intervention   281
 
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
Léa
 
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
Léa
 
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   Statut Membre Dernière intervention   281
 
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