Page 1 sur 1

Variables pour cases a cocher

Posté : 05 août 2007, 12:59
par mosquitout
Bonjour,
Je construit mon premier formulaire et ai qlq difficultés. Notamment avec la déclaration de variables pour les cases à cocher. J'ai un fichierA qui fait les tests et renvoi le formulaire avec les données déjà saisies ou bien le formulaire "à vide" si c'est la première fois qu'on passe dedans.
Voici le fichierA:
<?php
$coche_mr = ''; 
$coche_mme = ''; //'checked="checked"'; // si on veut initialiser le form
$coche_mlle = '';

if (!empty($_POST['Envoi']))
{
	$coche_mr = ($_POST["civilite"] == "monsieur") ? "checked" : "";
	$coche_mme = ($_POST["civilite"] == "madame") ? "checked" : "";
	$coche_mlle = ($_POST["civilite"] == "mademoiselle") ? "checked" : "";
	$nomprenom = (!empty($_POST["nomprenom"])) ? $_POST["nomprenom"] : ''; 
	
	// Test si vide 
	if (!empty($_POST["nomprenom"])){
		echo "OK";
	}
	else {
		echo "PB, zone vide";
		include('form_insc.inc.php');
	}
}
//cas par défaut (affichage du formulaire vierge) ************************
else {
include('form_insc.inc.php');
}
?>
Et voici le fichier "formulaire" que j'appelle par include:
<html>
<head>
<title>Page test</title>
</head>
<body>
<b>Merci de renseigner les informations suivantes</b>
<p></p>   
<form name="form" action="<?php echo $_SERVER["PHP_SELF"] ?>" method="post" >
      <input type="radio" name="civilite" id="radio1" 
	  value="monsieur" <?php echo $coche_mr; ?>/>Mr.<br />
      <input type="radio" name="civilite" id="radio2" 
	  value="madame" <?php echo $coche_mme; ?>/>Mme<br />
      <input type="radio" name="civilite" id="radio3" 
	  value="mademoiselle" <?php echo $coche_mlle; ?>/>Mlle<br />
      <p></p>
	  <label for="nom">Vos nom et pr&eacute;nom </label>
      <br />
      <input type="text" name="nomprenom" 
	  value="<?php echo (!empty($_POST["nomprenom"])) ? $_POST["nomprenom"] : ''; ?>" size="40" maxlength="40"/>
     <br />
      <input type="submit" value="Valider" name="Envoi">
  </form>
  </body>
</html>
Lorsque je lance pour la première fois fichierA = Ok, pas de pb. Si je renseigne une des cases à cocher mais oublie le nom = Ok, pas de probleme, je réaffiche le formulaire avec la bonne case cochée. MAIS, si je valide d'entrée sans rien avoir saisi alors là, il me dit un truc du style
Notice: Undefined index: civilite in c:\program files\easyphp1-8\www\formulaires\tmpbbm3smas2t.php on line 18
Je devine que c'est un pb de déclaration des variables mais je ne saisi pas très bien ou ? j'ai essayé en mettant "global" devant mes variables = rien !!!

Aie, aie aie, c'est dur de commencer !!!

Posté : 05 août 2007, 13:36
par Calimero
Bonjour, tu ne t'en sors pas si mal, courage :D

Pour ton info, ce ne sont pas des cases à cocher mais des boutons radio.

le message

Code : Tout sélectionner

Notice: Undefined index: civilite in c:\program files\easyphp1-8\www\formulaires\tmpbbm3smas2t.php on line 18
t'indique que tu as essayé d'accéder à l'index "civilite" dans un tableau alors que cet index n'existait pas (valeur inexistante). D'après ce que tu dis, et d'après le code que tu fournis, c'est bien normal : Ton code s'appuie sur l'existence de la variable $_POST['civilite'] sans avoir vérifié qu'elle existait. Visiblement, si l'utilisateur de ton formulaire n'y sélectionne rien, elle n'existe pas quand le formulaire est soumis.

Deux solutions donc pour toi : soit forcer une valeur par défaut dans tes boutons radio, soit tester l'existence de cette valeur avant de l'utiliser (avec un
if(isset($_POST['civilite'])){ /* ici le code qui traite la valeur */ }
par exemple).

Posté : 05 août 2007, 23:51
par mosquitout
Merci, c'était bien ca ;)

Posté : 06 août 2007, 06:09
par Cyrano
Salut,
un petit tour dans la FAQ ne serait pas une perte de temps, il y a un tuto spécialement fait sur la validation de formulaires complexes. Tu y aurais trouvé des éléments pour résoudre ta question. ;)