Case à cocher

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Case à cocher

Re: Case à cocher

par Maskime » 25 mai 2011, 15:45

Hello,

La confusion vient du fait que tu utilises la même valeur pour initialiser tes variables de sessions et enregistrer le fait que ta case a été décochée.
Pour l'initialisation de tes variables de session plutôt que d'utiliser une chaîne vide, utilise la valeur "null". Pour enregistrer le fait que la case a été décochée tu peux continuer à utiliser une chaîne vide. De cette façon quand tu regardes dans ta variable de session pour voir si ta case doit être cochée ou non, tu seras capable de savoir si la case a été coché/décochée/pas initialisée.

Ceci étant dit pense également à te créer des fonctions pour éviter d'avoir à dupliquer ton code dans ta page.

Case à cocher

par yeste64 » 24 mai 2011, 10:39

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!