Formulaire et reload avec les listes déroulantes

Eléphanteau du PHP | 17 Messages

12 août 2006, 18:47

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
Si je dis que ce n'est pas une signature, est-ce une signature ?

Eléphant du PHP | 216 Messages

12 août 2006, 19:14

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
Le PHP c'est bien, surtout quand ça marche ;) mon site
Hébergement gratuit et sans pub => Image

Eléphanteau du PHP | 17 Messages

12 août 2006, 19:34

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..
Si je dis que ce n'est pas une signature, est-ce une signature ?

Mammouth du PHP | 1511 Messages

12 août 2006, 21:01

Le selected="selected" est a placer dans la balise option, et non dans la balise select...
@+

Eléphant du PHP | 184 Messages

12 août 2006, 21:35

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é.
Image

Petit nouveau ! | 4 Messages

12 août 2006, 21:56

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

Mammouth du PHP | 1511 Messages

12 août 2006, 22:17

Oula sheed, tu t'es planté.
Ce n'est pas seulement selected qu'il faut mettre mais selected="selected"
@+

Petit nouveau ! | 4 Messages

12 août 2006, 22:32

si si ca marche aussi avec selected :lol:

ViPHP
ViPHP | 2144 Messages

12 août 2006, 23:13

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
Modifié en dernier par iclo le 12 août 2006, 23:23, modifié 1 fois.

Eléphanteau du PHP | 17 Messages

12 août 2006, 23:17

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 :?:
Modifié en dernier par Funkpeck le 12 août 2006, 23:23, modifié 1 fois.
Si je dis que ce n'est pas une signature, est-ce une signature ?

Eléphant du PHP | 184 Messages

12 août 2006, 23:22

tu peux enlever le value dans le tag select aussi
Image

Eléphanteau du PHP | 17 Messages

12 août 2006, 23:27

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.
Si je dis que ce n'est pas une signature, est-ce une signature ?

Eléphant du PHP | 184 Messages

13 août 2006, 00:01

La valeur d'un select est définie par rapport à la valeur de l'option sélectionné
Image

Petit nouveau ! | 4 Messages

13 août 2006, 00:11

'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

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

13 août 2006, 00:53

et dire qu'il y a des posts dans la FAQ qui peuvent aider... :roll:

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute