Précédent   Forum des professionnels en informatique > PHP > Langage > Formulaires
Formulaires Forum d'entraide sur les formulaires avec PHP. Avant de poster -> FAQ formulaires, Cours de formulaires et Sources de formulaires
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 11/05/2007, 18h35   #1
Membre chevronné
 
Inscription : janvier 2006
Messages : 918
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 918
Points : 735
Points : 735
Par défaut Désactiver une checkbox

Bonjour

J'ai un petit problème de checkbox : j'ai un formulaire avec contrôle des données. Si les données ne sont pas correctes, je les réécrit dans le formulaire et j'invite l'utilisateur à les modifier.
Pour cela, je déclare toutes mes variables de formulaire avec ce code :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
function define_var($var, $default = NULL) 
 {
  $variable = isset($GLOBALS[$var]) ? $GLOBALS[$var] : ( isset($_GET[$var]) ? $_GET[$var] : ( isset($_POST[$var]) ? $_POST[$var] : ( isset($_SESSION['VarsDemandeTiers'][$var]) ? $_SESSION['VarsDemandeTiers'][$var] : $default) ) );
  $_SESSION['VarsDemandeTiers'][$var] = $variable;
  $return = '$'.$var .' = \''.$variable."';";
  return $return;
 }
 
puis (pour la variable $role_emetteur qui nous intéresse) 
eval(define_var('role_emetteur', 0));
 
et enfin dans le formulaire (méthode POST):
Emetteur : <input type=checkbox value="1" <?php echo $role_emetteur == 1 ? 'checked' : '' ; ?> name=role_emetteur />
Lorsque les données entrées par l'utilisateur comportent une erreur et que je coche ma checkbox et que je valide, elle apparait bien cochée.
Par contre, quand je la décoche et que je revalide le formulaire, elle reste cochée. Et pour cause : une checkbox non cochée n'envoie pas de données par POST, et comme la variable de stockage $_SESSION['VarsDemandeTiers']['role_emetteur'] vaut 1, ma checkbox reste à 1.

J'ajoute que j'ai un header() vers la même page qui clôt le contrôleur du formulaire, ce qui fait que les données POST ne restent pas (sinon la question ne se serait pas posée).

Quelqu'un saurait-il comment résoudre ce problème ? Y a-t-il un moyen de faire envoyer des données par une checkbox non cochée ?

Merci d'avance
guidav est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/05/2007, 20h27   #2
Membre Expert
 
Inscription : janvier 2005
Messages : 1 249
Détails du profil
Informations personnelles :
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : janvier 2005
Messages : 1 249
Points : 1 417
Points : 1 417
Pourquoi ne testes-tu pas l'existence de $_POST['ma_checkbox'] et si elle n'existe pas, tu ne coches pas ?
vg33 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/05/2007, 09h58   #3
Membre chevronné
 
Inscription : janvier 2006
Messages : 918
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 918
Points : 735
Points : 735
Justement parce que j'ai un header() à la fin de mon contrôleur, ce qui fait qu'après le second passage, $_POST n'est jamais renseignée (d'où l'utilisation de $_SESSION).
guidav est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/05/2007, 10h01   #4
Membre Expert
 
Inscription : janvier 2005
Messages : 1 249
Détails du profil
Informations personnelles :
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : janvier 2005
Messages : 1 249
Points : 1 417
Points : 1 417
Dans ce cas, tu peux vérifier avant la fin de ton contrôleur si la checkbox est coché en faisant un isset() sur ton $_POST. Ensuite, tu modifies ta variable de session en conséquence. Je ne vois pas très bien où est le problème ?
vg33 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 19h22.


 
 
 
 
Partenaires

Hébergement Web