[PHP] Problème de checkbox dans une session

Problème de checkbox dans une session [PHP] - PHP - Programmation

Marsh Posté le 09-06-2006 à 13:49:25    

Bonjour à tous. Voici mon petit problème, si vous pouviez trouver 5 minutes pour m'aider je vous en serais éternellement reconnaissant.  :jap:  
 
 
J'ai un formulaire html découpé en plusieurs pages, dont certaines contiennent des checkbox. Ces formulaires sont en 'include' dans un fichier index.php. Un gros fichier session.php est inclus au début de 'index.php'.En, gros, a chaque changement de page du formulaire, index.php est rechargé, ce qui provoque l'enregistrement dans la session des variables.   Dans session.php, j'enregistre les valeurs $_POST ['machin'] dans $_SESSION['machin'].  
 
 
Jusque là, pas de problème. Cet enregistrement est effectué si un champ est rempli (isset && !empty), ceci pour éviter d'avoir à pondre un fichier session pour chaque formulaire. Le problème est que je souhaite récupérer les valeurs enregistrées dans la session pour que l'utilisateur n'ait pas à tout resaisir s'il revient sur une page.  
 
J'arrive à afficher une checkbox cochée au chargement d'une page si elle était déjà cochée lors d'un précédent passage sur cette page, mais si l'on veut la décocher celà ne marche plus quand on revient elle est toujours cochée.  
 
 
 
J'ai compris d'où venait le problème (une checkbox vide ne renvoi rien... et ne passe donc pas le test du isset). Si j'enlève ce test, quand je valide une page ou cette checkbox n'existe pas, celà remet ma checkbox en décochée.  
 
J'envisage deux solutions :  
 
1/ Séparer mon fichier session.php en session1.php etc... et les inclures selon les pages (au même titre que les parges du formulaire), mais bon, c'est déjà assez bordélique au niveaux du nombre de mes fichiers et des liens entre eux.
 
2/ Créer des input type="hidden" et changer leur valeur en JS en fonction d'une checkbow cochée ou non. Au moins j'aurais toujours une valeur lors du submit.
 
 
Aucune de ces deux solutions ne me satisfait pleinement, alors si vous avez des idées (ou même si vous trouvez que ce que j'ai raconté n'est pas clair, ce qui est hautement probable...) allez-y ;)
 
Merci d'avance

Reply

Marsh Posté le 09-06-2006 à 13:49:25   

Reply

Marsh Posté le 09-06-2006 à 21:44:14    

<input type="hidden" name="tacheckbox" value="0" />
<input type="checkbox" name="tacheckbox" value="1" />
 
Comme ça $_POST['tacheckbox'] est toujours défini, et à 0 si c'est pas sélectionné.
 
Soit dit en passant, !empty et isset sont redondants. !empty suffit.


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 12-06-2006 à 09:06:57    

Ha oui merci le hidden je l'avais placé sous la checkbox avec un javascript pour changer sa value et je n'enregistrait que la valeur du hidden, mais c'est un peu boulet ;). Pour les test , oui c'est grossier mais j'affinerai dans le temps , car ya plein de champs de formulaire et plein de conditions différentes. Encore merci de ton aide

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed