Conserver une variable dans une session

Résolu/Fermé
philippef - Modifié le 9 août 2018 à 12:00
 philippef - 10 août 2018 à 19:14
Bonjour,
je suis en train de construire un site de jumelage!! Donc un site en 2 langues.
Dans l'entête du site on clique sur un drapeau (en fait un blason) français ou sur un drapeau allemand pour afficher un menu en français ou en allemand.
J'essaie de passer par une session mais ça ne marche pas!!!
le code du fichier index.php
<?php
session_start();
if (isset($_GET['choixlangue'])){
 $_SESSION['choixlangue'];
}
?>
<!DOCTYPE HTML>
<html>
<head>
......
<?php
if (isset($_POST['french']))  $langue = $_POST['french'];
if (isset($_POST['deutch']))  $langue = $_POST['deutch'];
else $langue = "F";
?>
<div id="global">
 <FORM NAME="langue" ACTION="index.php?page=index" METHOD="post">
 <div id="bandeau">
  <div id="b1"><input name="french" src="images/blason-Troissy.jpg" type="image" value="F" id="imgbandeau" ></div>
  <div id="b2">JUMELAGE <br> TROISSY ~ PARTENHEIM </br></div>
  <div id="b3"><input name="deutch" src="images/blason-Partenheim.jpg" type="image" value="D" id="imgbandeau2" >
   <input type="text" name="choixlangue" value="<?php echo $langue; ?>" style="width:10%; display:inline;">

  </div>
 </div>
 </FORM>
<?php
if ($langue == "F"){
?>
 <div id="menuF">
  <div id="menu">
   <ul>
      <li><a href="index.php?page=accueilF">Accueil</a></li>
     <li><a href="index.php?page=historiqueF">Historique</a>
         <ul>
           <li><a href="#">Sous-item 1</a></li>
            <li><a href="#">Sous-item 2</a></li>
            <li><a href="#">Sous-item 3</a></li>
         </ul>
      </li>
      <li><a href="#">contact</a></li>
   </ul>
  </div>
 </div>
<?php
}
else {
?>
 <div id="menuD">
  <div id="menu">
   <ul>
      <li><a href="index.php?page=accueilD">Home</a></li>
     <li><a href="#">Historiche</a>
         <ul>
           <li><a href="#">Sous-item 1</a></li>
            <li><a href="#">Sous-item 2</a></li>
            <li><a href="#">Sous-item 3</a></li>
         </ul>
      </li>
      <li><a href="#">Kontakt</a></li>
   </ul>
  </div>
 </div>

<?php
}
?>
 <div id="conteneur">
...



EDIT : Correction des balises de code pour avoir la coloration syntaxique


Au départ le site est bien affiché en français (c'est ce que je veux). Quand je clique sur le blason allemand le menu qui apparaît est bien écrit en allemand . C'est aussi ce que je veux.
Le problème c'est que si je clique sur "home" par exemple le menu revient sur français !!!
Si quelqu'un peut m'aider ou me donner une autre solution ...
Merci d'avance

1 réponse

jordane45 Messages postés 38300 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 novembre 2024 4 704
9 août 2018 à 12:32
Bonjour,

Déjà, évite de mettre plusieurs variables pour tes langues...Cela t'oblige à vérifier chaque possibilité....
Donc ton formulaire serait plutot :
<div id="bandeau">
      <div id="b1">
        <img src="images/blason-Troissy.jpg" id="imgbandeau" class="clschoixLangue" data-langue="F"/>
      </div>
      <div id="b2">JUMELAGE <br> TROISSY ~ PARTENHEIM </br></div>
      <div id="b3">
        <img src="images/blason-Partenheim.jpg" id="imgbandeau2" class="clschoixLangue" data-langue="D" />
      </div>
     </div>
    <form name="langue" action="" method="post" id="formLangue">
      <input type="text" id="choixlangue" name="choixlangue" value="<?php echo $langue; ?>" style="width:10%; display:inline;">
    </form>
    
    <script type="text/javascript">
      var choisirLangue = function() {
          //on récupère la langue cliquée
          var lng = this.getAttribute("data-langue");
          console.log("choix langue = " + lng);
          //on place la langue dans l'input text
          document.getElementById('choixlangue').value = lng;
          
          //on submit le formulaire
          document.getElementById("formLangue").submit();
      };
      var classname = document.getElementsByClassName("clschoixLangue");
      for (var i = 0; i < classname.length; i++) {
          classname[i].addEventListener('click', choisirLangue, false);
      }
    </script>


Ensuite, il te faut stocker... et récupérer la valeur de la langue qui se trouve dans la session....

session_start();
//code à placer au début de tes pages
//si il y a eu un chanchement ( submit du formulaire)
if(!empty($_POST['choixlangue'] )){
  //on récupère la nouvelle langue
  $langue = $_POST['choixlangue'] ;
  // on place la langue en session_cache_expire
   $_SESSION['langue'] = $langue;
}else{
  //on regarde en session si la langue est définie
  if(!empty($_SESSION['langue'])){
    $langue = $_SESSION['langue'];
  }else{
    //langue par défaut
     $langue = "F";
  }
}

0
Merci jordan45,
Questions :
- Pourquoi les blasons ne sont plus des INPUT ?
- Il me semble que la fonction n'est pas appelée sur les images !!
Quand je clique sur l'image il ne se passe rien !!
0
jordane45 Messages postés 38300 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 novembre 2024 4 704
9 août 2018 à 14:16
J'ai remplacé les input par des balises images par habitude
Par contre, ça devrait fonctionner à condition que tu aies bien repris exactement mon code... y compris le javascript !
Penses à regarder dans la console de ton navigateur si tu n'as pas d'erreur sur le JS lorsque tu cliques sur les images.
0
ok Merci pour toute ton aide.
Donc résolu pour moi.
0