Création
d'entreprise
Posez votre question Signaler

[PHP] Cases à cocher

yeste64 10Messages postés 2 novembre 2009Date d'inscription 29 janvier 2012Dernière intervention - Dernière réponse le 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
Lire la suite 

[PHP] Cases à cocher »

3 réponses
Réponse
+0
moins plus
Salut,

au lieu de isset (ou en complément) utilise empty ;)
Ajouter un commentaire
Réponse
+0
moins plus
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..
Ajouter un commentaire
Réponse
+0
moins plus
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'])
Ajouter un commentaire
Ce document intitulé « [PHP] Cases à cocher » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?