[PHP] Cases à cocher
yeste64
Messages postés
11
Statut
Membre
-
vinc -
vinc -
Bonjour à tous, voici mon problème :
Je développe un formulaire "écran par écran", avec la possibilité pour l'utilisateur de revenir en arrière lorsqu'il le souhait. Il m'a donc fallu gérer tout le pré-remplissage des champs précédents grâce aux variables de sessions (un bon casse-tête!). Bref, je me retrouve maintenant à l'écran final :
L'utilisateur a la possibilité de cliquer sur un bouton "options" qui le renvoit vers une page contenant le formulaire des options. Dans ce formulaire, se trouvent des cases à cocher. Mon problème : elles doivent être cochée par défaut. Seulement, l'utilisateur peut soit "Valider", ou "Annuler" lorsqu'il est dans ce formulaire d'options. Je n'arrive pas à gérer ce déroulement. Voici comment je fais :
Formulaire avant Options :
Formulaire Options :
Et dans mes cases à cocher, j'affiche la variable correspondante à chaque case, qui est soit vide, soit 'checked'. Cependant, avec ce système, les cases se cochent la première fois (grâce aux conditions if (!isset($_SESSION...){$..= 'checked'} ), mais si l'utilisateur fait "Annuler", puis qu'il revient à nouveau dans les options, les cases ne se cochent plus (car les variables de session existent à présent, mais sont vides).
Donc voilà, c'est un casse-tête pour moi, j'espère qu'un esprit clair saura trouver une solution.
Merci d'avance à vous!
yeste64
Foetus
Messages: 22
Inscription: 12 Avr 2011, 18:03
Je développe un formulaire "écran par écran", avec la possibilité pour l'utilisateur de revenir en arrière lorsqu'il le souhait. Il m'a donc fallu gérer tout le pré-remplissage des champs précédents grâce aux variables de sessions (un bon casse-tête!). Bref, je me retrouve maintenant à l'écran final :
L'utilisateur a la possibilité de cliquer sur un bouton "options" qui le renvoit vers une page contenant le formulaire des options. Dans ce formulaire, se trouvent des cases à cocher. Mon problème : elles doivent être cochée par défaut. Seulement, l'utilisateur peut soit "Valider", ou "Annuler" lorsqu'il est dans ce formulaire d'options. Je n'arrive pas à gérer ce déroulement. Voici comment je fais :
Formulaire avant Options :
if (isset($_POST['villes5a20'])){$_SESSION['villes5a20']= $_POST['villes5a20'];}else{$_SESSION['villes5a20']= '';}
if (isset($_POST['villes20a100'])){$_SESSION['villes20a100']= $_POST['villes20a100'];}else{$_SESSION['villes20a100']= '';}
if (isset($_POST['villesPlus100'])){$_SESSION['villesPlus100']= $_POST['villesPlus100'];}else{$_SESSION['villesPlus100']= '';}
if (isset($_POST['departements'])){$_SESSION['departements']= $_POST['departements'];}else{$_SESSION['departements']= '';}
if (isset($_POST['regions'])){$_SESSION['regions']= $_POST['regions'];}else{$_SESSION['regions']= '';}
if (isset($_POST['statistiques'])){$_SESSION['statistiques']= $_POST['statistiques'];}else{$_SESSION['statistiques']= '';}
Formulaire Options :
// Si on est déjà allé dans les options
if (isset($_SESSION['villes5a20']))){$villes5a20= 'checked';}else{$villes5a20= '';}
if (isset($_SESSION['villes20a100']) && !empty($_SESSION['villes20a100'])){$villes20a100= 'checked';}else{$villes20a100= '';}
if (isset($_SESSION['villesPlus100']) && !empty($_SESSION['villesPlus100'])){$villesPlus100= 'checked';}else{$villesPlus100= '';}
if (isset($_SESSION['departements']) && !empty($_SESSION['departements'])){$departements= 'checked';}else{$departements= '';}
if (isset($_SESSION['regions']) && !empty($_SESSION['regions'])){$regions= 'checked';}else{$regions= '';}
if (isset($_SESSION['statistiques']) && !empty($_SESSION['statistiques'])){$statistiques= 'checked';}else{$statistiques= '';}
// Si on n'a jamais été dans les options
if (!isset($_SESSION['villes5a20'])){$villes5a20= 'checked';}
if (!isset($_SESSION['villes20a100'])){$villes20a100= 'checked';}
if (!isset($_SESSION['villesPlus100'])){$villesPlus100= 'checked';}
if (!isset($_SESSION['departements'])){$departements= 'checked';}
if (!isset($_SESSION['regions'])){$regions= 'checked';}
if (!isset($_SESSION['statistiques'])){$statistiques= 'checked';}
Et dans mes cases à cocher, j'affiche la variable correspondante à chaque case, qui est soit vide, soit 'checked'. Cependant, avec ce système, les cases se cochent la première fois (grâce aux conditions if (!isset($_SESSION...){$..= 'checked'} ), mais si l'utilisateur fait "Annuler", puis qu'il revient à nouveau dans les options, les cases ne se cochent plus (car les variables de session existent à présent, mais sont vides).
Donc voilà, c'est un casse-tête pour moi, j'espère qu'un esprit clair saura trouver une solution.
Merci d'avance à vous!
yeste64
Foetus
Messages: 22
Inscription: 12 Avr 2011, 18:03
3 réponses
-
Salut,
au lieu de isset (ou en complément) utilise empty ;) -
Non car une variable de session vide peut quand même exister. Et dans le cas ou une checkbox n'est pas coché, le formulaire ne renvoit rien, la variable de session doit donc exister mais être vide..
-
J'ai rien compris au problème, mais si sa cause est que tes variables existent et sont vides, tu peux utiliser la fonction unset pour les détruire :
unset($_SESSION['variable'])