Précédent   Forum des professionnels en informatique > PHP > Scripts
Scripts Forum d'entraide sur les scripts PHP téléchargés. Les meilleurs scripts PHP, la FAQ scripts PHP, toutes les FAQ PHP
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 24/05/2011, 14h42   #1
Membre à l'essai
 
Homme
Développeur Web
Inscription : mai 2011
Messages : 85
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : Communication - Médias

Informations forums :
Inscription : mai 2011
Messages : 85
Points : 21
Points : 21
Par défaut Cases à cocher

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 :

Code :
1
2
3
4
5
6
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 :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
// 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 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/05/2011, 15h42   #2
Membre Expert
 
Avatar de Djakisback
 
Inscription : février 2005
Messages : 1 791
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 1 791
Points : 1 681
Points : 1 681
Salut,
pourquoi tu définis des variables de session vides ?
Code :
1
2
 
if (isset($_POST['villes5a20'])){$_SESSION['villes5a20']= $_POST['villes5a20'];}else{$_SESSION['villes5a20']= '';}
est-ce que tu en as besoin ailleurs ?

(Au passage, tu aurais pu utiliser des tableaux pour simplifier le code.)
Djakisback est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/05/2011, 15h51   #3
Membre à l'essai
 
Homme
Développeur Web
Inscription : mai 2011
Messages : 85
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : Communication - Médias

Informations forums :
Inscription : mai 2011
Messages : 85
Points : 21
Points : 21
J'ai trouvé une solution :
Je déclare une variable de session à 0 dans le formulaire précédant ces deux pages. Si je reçois des données du formulaire des options dans le formulaire sans options, j'incrémente de 1. De ce fait, je ne commence mon traitement de mes cases à cocher, qu'à partir du moment où l'utilisateur a validé au moins une fois le formulaire des options (et donc que la variable de session est supérieure à 0).
Une gestion en tableaux auraient simplifier les traitements, mais je ne sais pas trop comment m'y prendre...
yeste64 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/05/2011, 16h00   #4
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 984
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : février 2010
Messages : 2 984
Points : 5 016
Points : 5 016
Pour t'éviter la douloureuse nécessité d'introduire manuellement le paramètre checked dans tes nodes, tu peux utiliser ma librairie de génération de formulaires.

Un peu de pub ne fait pas de mal
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 14h15.


 
 
 
 
Partenaires

Hébergement Web