Jump to content

Récupération valeur bouton radio et textarea - formulaire


Recommended Posts

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

Link to post
Share on other sites

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

Link to post
Share on other sites

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.

Link to post
Share on other sites

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.

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...