Affichage conditionnelle d'un bout de page

Liky -  
Ozimandias Messages postés 528 Statut Membre -
Bonjour,

J'ai une partie de mon code en javascript et une autre en html. Sur ma page web, j'affiche deux bouttons radios (mode n°1:"view" et mode n°2:"edit"). On ne peut en sélectionner qu'un seul à la fois. Le mode n°2 ne peut être sélectionné seulement si l'utilisateur et logué. S'il n'est pas logué, il est renvoyé sur un page login où on lui demande de rentrer son identifiant.

Voici mon code html pour mes deux bouttons :

b>Mode : </b>
<form>
<input type="radio" name="Mode" id="Mode_view" value="view" onclick="modeCheck(this.form.Mode);" "checked="checked">View
<input type="radio" name="Mode" id="Mode_edit" value="edit" onclick="modeCheck(this.form.Mode);"checked="checked">Edit
  

Comme vous pouvez le voir, les deux bouttons renvoient vers une fonction Javascript -> modeCheck. Voici son code :

function modeCheck(radio){
for (var i=0; i<radio.length;i++) {
if (radio[i].checked) {
mode = radio[i].value
}
}
if (mode =="edit"){
window.location.href="user/checkLog.php";
}
}

Cette fonction renvoie vers un code php qui teste (à l'aide des variables de sessions) si l'utilisateur est connecté. Le code php renvoie vers la page formulaire, si l'utilisateur n'est pas connecté. Voici le code php :
fichier checkLog.php
<?php
session_start();
if (!isset($_SESSION['auth']))
{ header("Location: login_form.inc");
}
else{
header("Location: ../index.php");
}
?>

Voilà, mon problème : Si l'utilisateur est déjà connecté, et qu'il coche le mode n°2, on recharge la page principale. Cependant lorsque cette page réapparait, le mode n°1 devient coché, et le mode n°2 décoché. Logique puisqu'on recharge le fichier index dans lequel est écrit le code html ci-dessus avec le mode n°1 coché par défaut. Je voudrais simplement que le mode n°2 reste coché.

J'ai pensé à utiliser des frames, mais je souhaite avant tout savoir s'il existe une solution propre pour ce genre de problème.

Merci pour votre aide.

2 réponses

  1. Ozimandias Messages postés 528 Statut Membre 46
     
    quand tu recharges ta page, passes lui une variable en get (nompage?test=button2) qui indique quel boutton doit être coché. Ensuite tu fais le test par exemple:

    if ($_GET['test'] == "button1"){
    $button1 = "checked";}else{$button1 = "";}
    if ($_GET['test'] == "button2"){
    $button2 = "checked";}else{$button2 = "";}

    <input type="radio" name="Mode" id="Mode_view" value="view" onclick="modeCheck(this.form.Mode);" "checked="<? echo $button1; ?>">View
    <input type="radio" name="Mode" id="Mode_edit" value="edit" onclick="modeCheck(this.form.Mode);"checked="<? echo $button2; ?>">Edit

    ce n'est qu'un exemple, la syntaxe n'est pas forcement correcte à 100%
    1
    1. Liky
       
      Merci Ozimandias,

      J'ai trouvé une solution qui ressemble à ce que tu me dis, en utilisant les variables de session. Pour les intéressés, la voici :

      <!--Bouttons radios. Ces boutons sont gérés en fonction des variables des sessions. Au chargement de la page, s'il l'utilisateur est logué, on coche le mode Edit
      sinon, on coche le mode View-->
      <b>Mode : </b>
      <form>
      <input type="radio" name="Mode" id="Mode_view" value="view" onclick="modeCheck(this.form.Mode);"
      <?php
      session_start();
      if (!isset($_SESSION['auth']))
      {echo 'checked="checked"';}
      ?>
      >View
      <input type="radio" name="Mode" id="Mode_edit" value="edit" onclick="modeCheck(this.form.Mode);"
      <?php
      session_start();
      if ($_SESSION['auth']=="yes")
      {echo 'checked="checked"';}
      ?>
      >Edit
        

      La variable $_SESSION est vide, si l'utilisateur n'est pas logué, et vaut "yes', s'il est logué.
      0
  2. Ozimandias Messages postés 528 Statut Membre 46
     
    Penses à mettre ton sujet en résolu...
    0