[Résolu] Formulaire : Pb réaffichage valeur checkbox

Formulaire : Pb réaffichage valeur checkbox [Résolu] - PHP - Programmation

Marsh Posté le 15-06-2007 à 00:13:47    

Bonjour,
 
Pour commencer je tiens à annoncer que je débute en PHP et, après de nombreuses heures de recherches sur internet, j'ai réussi à faire un formulaire dynamique pour une association dont je m'occupe bénévolement.
 
La vérification des champs obligatoires s'effectue sur la même page et réaffiche les valeurs des champs.
 
Seulement, je suis bloqué dans le réaffichage de la valeur d'une "checkbox" après la validation incorrecte du formulaire.
 
Description du problème :
 
La checkbox "information" étant cochée par défaut, si on la décoche et l'on valide le formulaire en ayant un champ invalide, elle revient cochée !!!
 
J'ai également un autre problème en javascript que je détaille dans la section javascript : Sujet 105515
 
C'est pourquoi je sollicite votre aide pour concrétiser mon formulaire...
 
Merci par avance.
 

Code :
  1. $information = (isset($_POST['information'])) ? $_POST['information']                     : "";
  2. //-- DEBUT CHECKBOX INFORMATION --//
  3.   <table width="533">
  4.     <tr valign="baseline">
  5.       <td width="20" align="left"><div align="left">
  6.               <input name="information" type="checkbox" value="Oui" <?php echo($information == "Oui" ) ? ' checked="checked"' : checked; ?> />
  7.         </div></td>
  8.           <td width="501" valign="middle"> Je souhaite être informé(e) du résultat de l'opération.
  9.           </td>
  10.       </tr>
  11.   </table>
  12. //-- FIN CHECKBOX INFORMATION --//


Message édité par Ogvtr le 17-06-2007 à 13:41:40
Reply

Marsh Posté le 15-06-2007 à 00:13:47   

Reply

Marsh Posté le 16-06-2007 à 14:18:49    

N'ayant toujours pas trouvé de réponse à mon problème, je remonte le sujet...
 
SVP pouvez-vous m'aider car je souhaiterais mettre rapidement en ligne mon formulaire.
 
MERCI

Reply

Marsh Posté le 16-06-2007 à 14:53:36    

à la place de "checked" tu mets un bout de php qui n'affiche rien si (isset($_POST["information"])) et si sa valeur est décochée, sinon il affiche "checked"

Reply

Marsh Posté le 16-06-2007 à 18:28:10    

Bjr Deamon : Comme je suis débutant, voilà au moins deux heures que je me tracasse la tête avec cette fameuse checkbox 'information' est je n'y arrive toujours pas...
 
En mettant :

Code :
  1. <input name="information" type="checkbox" value="Oui" <?php echo($information != "Oui" ) ? ' checked="null" ': checked; ?> />


La case est cochée par défaut mais; si on la décoche, elle revient cochée après la vérification du formalaire.
 
En mettant :

Code :
  1. <input name="information" type="checkbox" value="Oui" <?php echo($information == "Oui" ) ? ' checked="checked"' : null; ?> />


Là, la valeur cochée ou décochée est bien gardée après la vérification mais bien évidemment la checkbox est décochée par défaut !
 
Je me demande aussi s'il n'y a pas un problème avec :

Code :
  1. $information   = (isset($_POST['information']))   ? $_POST['information']                       : "";


 
Merci de votre aide pour me permettre d'avoir la checkbox cochée par défaut est de la garder décochée (si elle a été décochée) après la vérification du formulaire...
 
PS : Le code visible sur le premier post a été mis à jour.

Reply

Marsh Posté le 16-06-2007 à 18:52:58    

Mettez soit :

Code :
  1. <input name="information" type="checkbox" value="Oui" <?php if($information == "Oui"||!isset($_POST['information'])) echo 'checked';?> />


ou alors  

Code :
  1. $information   = (isset($_POST['information']))   ? $_POST['information']                       : "Oui";


Reply

Marsh Posté le 16-06-2007 à 19:31:13    

Deamon a écrit :

Mettez soit :

Code :
  1. <input name="information" type="checkbox" value="Oui" <?php if($information == "Oui"||!isset($_POST['information'])) echo 'checked';?> />


ou alors  

Code :
  1. $information   = (isset($_POST['information']))   ? $_POST['information']                       : "Oui";



 
J'ai essayé les deux possibilités mais ça ne fonctionne pas... Si elle a été décochée, la case revient toujours cochée après la verification.

Reply

Marsh Posté le 16-06-2007 à 21:09:09    

Ah ok j'ai compris, c'est que quand la case est non cochée c'est considéré comme s'il n'y avait aucune info. Dans ce cas le plus simple c'est de faire 2 boutons radio Oui/Non. Ou alors sinon il faut faire un test isset sur d'autres éléments du formulaire pour vérifier si on est en correction de formulaire ou non et ainsi marqué le checked ou pas.

 

Ex : <input name="information" type="checkbox" value="Oui" <?php if($information == "Oui"||!isset($_POST['nom'])) echo 'checked';?> />

 

Et sinon pour la vérification des champs une seule erreur s'affiche même s'il y en a plusieurs moi je mettrais directement tout ce qui ne va pas. Ca évite de faire plusieurs fois l'envoi de formulaire. Dans ce cas il faudrait donc initialiser $erreur=""; au tout début et ensuite faire pour chaque test d'erreur (les elseif seraient remplacés par if) $erreur.="...Texte pour cette erreur..."; ce qui aura pour but de concaténer toutes les erreurs.


Message édité par Deamon le 16-06-2007 à 21:10:27
Reply

Marsh Posté le 17-06-2007 à 06:45:29    

Merci beaucoup Deamon, maintenant ça fonctionne parfaitement !!!
 
Comme je suis débutant, j'ai pour le moment beaucoup de mal avec les fonctions et les variables PHP. Mais en y regardant de plus près c'est plutot logique...
 
Merci également pour le conseil concernant les messages d'erreurs. C'est vrai que ça peut être très intéressant d'avoir tous les messages qui s'affichent en même temps mais je ne souhaite pas que le bouton de validation du formulaire soit trop bas par rapport à la balise de réaffichage en cas d'erreurs... Enfin, je vais y réfléchir.
 
Maintenant il ne me reste plus qu'à trouver une solution concernant mon problème de réaffichage des champs dynamiques (Sujet 105515), mais là je crois que ça viens du javascript.
 
Encore MERCI...


Message édité par Ogvtr le 17-06-2007 à 06:46:25
Reply

Sujets relatifs:

Leave a Replay

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