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 :
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.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14function 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 />
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
Partager