bouton radio qui reste coché quand renvoi du formulaire

lau13000
Invité n'ayant pas de compte PHPfrance

10 juin 2012, 22:46

Bonjour,

cela fait quelques jours que je fais des recherches pour faire en sorte que le bouton radio que coche le visiteur reste coché si le formulaire me retourne une erreur pour ne pas qu'il ait à re-cocher tous les boutons radios...

en gros, s'il entre un pseudo erroné alors qu'il a choisi la case à coché 'oui', j'aimerai que le formulaire (lorsqu'il est retourné) note simplement l'erreur au niveau du pseudo mais garde le choix "oui" coché.

voici ma page qui contient le formulaire:
<?php session_start();?>

enseignant ?
					
<label for="oui">oui</label>
		<input  type="radio" name="enseignant" value="oui" <?php if ($_SESSION['form']['enseignant']=='oui') echo $_SESSION['form']['enseignant'];?>/>								
											
<label for="non">non</label>
		<input  type="radio" name="enseignant" value="non" <?php if($_SESSION['form']['enseignant']=='non') echo $_SESSION['form']['enseignant'];?>/>
		
<?php //si une erreur ni oui ni non pas coché alors ecris l'erreur
	if (!empty($_SESSION['erreur']['enseignant']) and !empty($_SESSION['erreur']['enseignant']))
	echo $_SESSION['erreur']['enseignant'];?>

			
voici la page de traitement de mon formulaire:
<?php 
session_start();
$_SESSION['erreur']='';
$_SESSION['form']='';
?>
<?php		//si aucun bouton enseignant coché
		if (empty($_POST['enseignant']))
				{
				$_SESSION['erreur']['enseignant']='<p class="erreur">cochez une case.</p>';
				}
		//si valeur = oui, le checked est noté
		
			if(isset($_POST['enseignant'])=='oui')
					{
					$_SESSION['form']['enseignant']=$_POST['enseignant'];
					$_SESSION['form']['enseignant']='checked="checked"';
					}
						if(isset($_POST['enseignant'])=='non')
					{
					$_SESSION['form']['enseignant']=$_POST['enseignant'];
					$_SESSION['form']['enseignant']='checked="checked"';
					}
?>
Je précise que si aucun des boutons n'est coché le retour de l'erreur "cochez une case" se fait correctement.
Je n'arrive pas à gérer le checked en fait...

Merci pour votre aide!

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

10 juin 2012, 23:32

salut,


c'est l'attribut checked qu'il faut utiliser.

dans la construction de la balise tu ajoute un if pour vérifier si la case était déjà cochée si oui checked="checked" si on rien.

plus d'info sur la checkbox http://fr.selfhtml.org/html/formulaires ... rification

@+
Il en faut peu pour être heureux ......

Mammouth du PHP | 1967 Messages

11 juin 2012, 01:26

Je pense que ton erreur vien d'ici :
if(isset($_POST['enseignant'])=='oui')
Tu vérifie que le retour du isset (True ou false) est égale à un string, c'est un peu aberrant essaye plutot avec ceci
if(isset($_POST['enseignant']) && $_POST['enseignant']=='oui')
Sinon, ajoute des echo de débugage un peu partout pour voir si les assignation : lectures de variable se fait comme tu le souhaite
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube

lau13005
Invité n'ayant pas de compte PHPfrance

11 juin 2012, 14:10

Bonjour, merci!
@spols: Mon erreur venait effectivement d'une erreur de syntaxe.
Merci à tous pour vos réponses rapides.