[PHP] Cases à cocher

Fermé
yeste64 Messages postés 10 Date d'inscription lundi 2 novembre 2009 Statut Membre Dernière intervention 29 janvier 2012 - Modifié par yeste64 le 24/05/2011 à 14:25
 vinc - 25 mai 2011 à 13:17
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 :
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

Mc Flurry Messages postés 5 Date d'inscription jeudi 14 avril 2011 Statut Membre Dernière intervention 26 mai 2011
24 mai 2011 à 11:56
Salut,

au lieu de isset (ou en complément) utilise empty ;)
0
yeste64 Messages postés 10 Date d'inscription lundi 2 novembre 2009 Statut Membre Dernière intervention 29 janvier 2012
24 mai 2011 à 14:20
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..
0
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'])
0