Page 1 sur 1

Formulaire et reload avec les listes déroulantes

Posté : 12 août 2006, 18:47
par Funkpeck
Bonjoir,


voilà mon problème :

je crée un formulaire qui affiche des messages d'erreurs à coté des champs vides ou incorrects, tout en gardant les valeurs tapées précédemment dans les champs.

Cela marche, sauf pour une liste déroulante qui revient toujours à zero :

Code : Tout sélectionner

Civilité * : <br> <select tabindex="0" size="1" name="civilite" value="<?php echo $_POST['civilite']; ?>"> <option>Mr</option> <option>Mlle</option> <option>Mme</option> </select>
Ca fait un moment que je cherche, mais je ne vois pas comment faire :?

Vous avez une idée ?
Merci

Posté : 12 août 2006, 19:14
par polo
Bonjour,
essaie avec ça:
Civilité * : <br>
  <select tabindex="0" size="1" name="civilite" value="<?php echo $_POST['civilite']; ?>" selected="selected">
   <option>Mr</option>
   <option>Mlle</option>
   <option>Mme</option>
</select>
En espérant t'avoir été utile :D

Posté : 12 août 2006, 19:34
par Funkpeck
Salut,

j'ai intégré la mention

Code : Tout sélectionner

selected="selected"
mais hélas cela ne change rien..

J'ai tenté de mettre

Code : Tout sélectionner

selected="<?php echo$_POST['civilite']; ?>"
mais rien non plus..

:?: là je ne vois pas..

Posté : 12 août 2006, 21:01
par momox
Le selected="selected" est a placer dans la balise option, et non dans la balise select...
@+

Posté : 12 août 2006, 21:35
par graphistnet
Le value serait mieux dans le tag option aussi, c'est comme ceci que tu donnes ta valeur aux champs du select, les éléments entre les tags ne servant qu'à la lisibilité.

Posté : 12 août 2006, 21:56
par sheed
Bonjour

Voila je me suis permit de modifier ton code et je pense que la il marche parfaitement je l'ai tester avec la méthode GET( expl : civilite.php?civilite=Mme) et c Ook, bon voici Le code :
<p>Civilit&eacute; * : </p><br>
<label>
<select tabindex="0" size="1" name="civilite" value="Mlle">
  <option value="Mr" <?php if($_GET['civilite']=="Mr")echo"selected"; ?> >Mr</option>
  <option value="Mlle" <?php if($_GET['civilite']=="Mlle")echo"selected"; ?> >Mlle</option>
  <option value="Mme" <?php if($_GET['civilite']=="Mme")echo"selected"; ?> >Mme</option>
</select>
</label>
j'espère que sa te conviendra :D :D

Posté : 12 août 2006, 22:17
par momox
Oula sheed, tu t'es planté.
Ce n'est pas seulement selected qu'il faut mettre mais selected="selected"
@+

Posté : 12 août 2006, 22:32
par sheed
si si ca marche aussi avec selected :lol:

Posté : 12 août 2006, 23:13
par iclo
si si ca marche aussi avec selected :lol:
oui, ça fonctione, mais ça ne respecte pas les normes W3C, donc c'est bon mais c'est pas parfait :D

Posté : 12 août 2006, 23:17
par Funkpeck
Excellent !

Ca marche avec ça (en POST donc) :
  <select tabindex="0" size="1" name="civilite" value="<?php echo $_POST['civilite']; ?>">
	<option <?php if ($_POST['civilite'] == 'Mr') echo 'selected="selected"'; ?> value="Mr" >Mr</option>
	<option <?php if ($_POST['civilite'] == 'Mlle') echo 'selected="selected"'; ?> value="Mlle" >Mlle</option>
	<option <?php if ($_POST['civilite'] == 'Mme') echo 'selected="selected"'; ?> value="Mme" >Mme</option>
</selected>
Merci beaucoup à vous :D

J'en profite cependant pour poser une autre question :

mon formulaire, une fois tous les champs correctement remplis, est censé aller sur une page ou l'on explique le succès de l'opération, cela à l'aide d'un header :

if($_POST)
{
	if(isset($_POST['nom'], $_POST['prenom'], $_POST['email'], $_POST['adresse'], $_POST['cp'], $_POST['ville']) && 
	!is_numeric($_POST['nom']) && !is_numeric($_POST['prenom']) && is_numeric($_POST['cp']) && !is_numeric($_POST['ville']))
	{
		$succes = 'Succes de la commande';
		header ('Location: commande_succes.php', TRUE);
	}
}
Le probleme est qu'il m'affiche un message d'erreur que je n'arrive pas trop à comprendre :

Warning: Cannot modify header information - headers already sent by (output started at E:\Program Files\wamp\www\Formation PHP - Anaska\projet\site\inc_php\commande.php:3) in E:\Program Files\wamp\www\Formation PHP - Anaska\projet\site\inc_php\commande.php on line 20

Une idée :?:

Posté : 12 août 2006, 23:22
par graphistnet
tu peux enlever le value dans le tag select aussi

Posté : 12 août 2006, 23:27
par Funkpeck
Ah bon ?

Bon honnetement là j'ai du mal à comprendre à quoi sert ce value (surtout dans le cas d'une liste) :lol:


EDIT :

concernant mon probleme de header, je crois que c'est surtout dû au fait qu'il se trouve avant le "submit".

Je pense refaire mon formulaire sur deux pages, avec des GET.

Posté : 13 août 2006, 00:01
par graphistnet
La valeur d'un select est définie par rapport à la valeur de l'option sélectionné

Posté : 13 août 2006, 00:11
par sheed
'value' signifie tout simplement la valeur initial. dans les zones de liste on utilise selected="selected" qui veut dire que l'option est sélectionné, donc elle est définit comme valeur initial.

pour le header assure toi qu'il n'existe pas de code html avant

Posté : 13 août 2006, 00:53
par Truc
et dire qu'il y a des posts dans la FAQ qui peuvent aider... :roll: