Affichage conditionnelle d'un bout de page
Liky
-
Ozimandias Messages postés 528 Statut Membre -
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.
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:
- Affichage conditionnelle d'un bout de page
- Mise en forme conditionnelle excel - Guide
- Impossible de supprimer une page word - Guide
- Excel liste déroulante conditionnelle - Guide
- Affichage double ecran - Guide
- Comment imprimer un tableau excel sur une seule page - Guide
2 réponses
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%
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%
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é.