Affichage conditionnelle d'un bout de page

Fermé
Liky - 1 juin 2009 à 07:37
Ozimandias Messages postés 502 Date d'inscription jeudi 14 mai 2009 Statut Membre Dernière intervention 10 mars 2010 - 4 juin 2009 à 11:50
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.
A voir également:

2 réponses

Ozimandias Messages postés 502 Date d'inscription jeudi 14 mai 2009 Statut Membre Dernière intervention 10 mars 2010 46
2 juin 2009 à 11:15
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
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
Ozimandias Messages postés 502 Date d'inscription jeudi 14 mai 2009 Statut Membre Dernière intervention 10 mars 2010 46
4 juin 2009 à 11:50
Penses à mettre ton sujet en résolu...
0