Antho03 Posté 11 Mars 2010 Posté 11 Mars 2010 Bonjour, J'ai créé un formulaire avec entre autres des boutons radios et des textarea. Quand l'utilisateur à fait une erreur, je lui indique dans ma page de traitement dans laquelle j'ai placé un lien qui lui permet de revenir sur la page du formulaire. Je récupère les valeurs de mes différents champs (text, select) avec des variables de sessions sans pb. Je bloque seulement sur les radio et textarea. mon formulaire : <?php session_start();?>...<form name=...>...<input type="radio" name="Zgroupe" value="oui" <?php if($_POST['Zgroupe']=='oui') {echo 'checked="checked"';}?>/>oui <input type="radio" name="Zgroupe" value="non" <?php if($_POST['Zgroupe']=='non') {echo 'checked="checked"';}?>/>non<textarea name="Zautres_entre_groupe" cols="24" rows="5" value="<?php echo $_POST['Zautres_entre_groupe'] ;?>"></textarea>...</form> ma page de traitement : <?php session_start();...$_SESSION['Zgroupe'] = $_POST['Zgroupe'];$_SESSION['Zautres_entre_groupe'] = $_POST['Zautres_entre_groupe'];...?> Mes valeurs ne sont pas récupérées avec ces bouts de code. J'ai écumé plusieurs forums disant que ce type de code fonctionne mais pas chez moi :??: Où je fais erreur ? Il ne me reste qu'à faire fonctionner ces 2 fonctions pour terminer mon formulaire... Merci pour votre aide
camillejg Posté 11 Mars 2010 Posté 11 Mars 2010 Bonjour Antho03, Sur ton "if" (<?php if($_POST['Zgroupe']=='oui') {echo 'checked="checked"';}?>) tu fais ta vérification avec ton $_POST['...'], ne serait-ce pas plutôt avec ton $_SESSION['...'] initialisé dans tes traitements ? Pour le textarea, tu n'as pas de value à définir. Ta valeur doit se trouver entre le <textarea> et </textarea>. Donc pour toi : <textarea name="Zautres_entre_groupe" cols="24" rows="5"><?php echo $_SESSION['Zautres_entre_groupe'] ;?></textarea> Pour vérifier l'ensemble des SESSIONS initialisées lors de ton retour sur le formulaire, tu peux faire "print_r($_SESSION)", qui te permettra de visualiser tout ce qui est rempli. Bonne chance, camillejg
jcaron Posté 11 Mars 2010 Posté 11 Mars 2010 La bonne solution pour un formulaire, c'est d'utiliser le même script pour l'affichage et le traitement. Le script a alors une structure de ce genre: si (formulaire_a_ete_soumis){ verifier formulaire, stocker les erreurs éventuelles pour chaque champ si (pas d'erreurs) { traitement redirect vers autre page }}afficher formulaire avec valeurs déjà soumises ou valeurs par défaut et erreurs éventuelles(formulaire doit contenir un input hidden qui va permettre de faire le test formulaire_a_ete_soumis) Ca évite de stocker tout plein d'infos dans des sessions (ce qui va faire des choses bizarres quand l'utilisateur va remplir le même formulaire par la suite, voire une autre si tu as des noms de variables communs), ça élimine les problèmes de fenêtres multiples, ca te permet d'avoir le formulaire et les erreurs à corriger sur la même page (et même de mettre l'erreur à côté du champ saisi)... NB: après un POST (ou un GET qui ne serait pas idempotent, i.e. qui a un effet plutôt que juste un affichage), il est toujours utile de faire un redirect vers une page idempotente, ça évite les problèmes avec les reloads éventuels (qui vont remettre des choses en base, renvoyer un nouveau mail, que sais-je...). Jacques.
Antho03 Posté 12 Mars 2010 Auteur Posté 12 Mars 2010 Bonjour Antho03, Sur ton "if" (<?php if($_POST['Zgroupe']=='oui') {echo 'checked="checked"';}?>) tu fais ta vérification avec ton $_POST['...'], ne serait-ce pas plutôt avec ton $_SESSION['...'] initialisé dans tes traitements ? Pour le textarea, tu n'as pas de value à définir. Ta valeur doit se trouver entre le <textarea> et </textarea>. Donc pour toi : <textarea name="Zautres_entre_groupe" cols="24" rows="5"><?php echo $_SESSION['Zautres_entre_groupe'] ;?></textarea> Pour vérifier l'ensemble des SESSIONS initialisées lors de ton retour sur le formulaire, tu peux faire "print_r($_SESSION)", qui te permettra de visualiser tout ce qui est rempli. Bonne chance, camillejg C'était bien ça. Merci beaucoup camillejg !! Merci à Jacques aussi pour ses précisions.
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant