Replacer les valeurs déjà saisie dans un formulaire! [Résolu]

Messages postés
3
Date d'inscription
dimanche 28 septembre 2003
Statut
Membre
Dernière intervention
8 février 2006
- - Dernière réponse : seb_acsg
Messages postés
3
Date d'inscription
dimanche 28 septembre 2003
Statut
Membre
Dernière intervention
8 février 2006
- 8 févr. 2006 à 09:44
Bonjour!

Voilà j'ai un petit problème, je suis un débutant en php et je dois créer un formulaire qui entre des données dans une base mysql pour une enquête de satisfaction.

J'ai donc créé mon formulaire, j'ai créer un petit code qui fait le contrôle de la saisie mais là ou ça coince c'est que si les données saisies ne sont pas adéquates mon formulaire me renvoie l'erreur et réinitialise tout les champs que j'ai déjà saisi...

J'ai utilisé ce code pour palier au problème dans le formulaire.

<select name="nbr_h" size="1">
<option selected value="<? Print $nbr_h ?>"><? Print $nbr_h ?></option>
<option value="1">1 heure</option>
<option value="2">2 heures</option>
<option value="3">4 heures</option>
<option value="4">8 heures</option>
</select>

En 2 mots, je revois mon formulaire sur lui même, la variable est donc récupérée avec le $_POST() et elle est ré-assignées au champs par défaut en cas d'erreur. Mais comme on le vois la valeur du champs et un nombre... du coup l'utilisateur verra pleins de nombres là ou il avait saisi du texte.

Que puis-je faire pour que ça soit le texte et non la valeur du champs qui se replace dans les menus déroulants?

Merci BCP

Le Coyote fou
Afficher la suite 

10 réponses

Meilleure réponse
Messages postés
10918
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
17
3
Merci
Hello,

pas tout compris, mais je me lance :

<select name="nbr_h" size="1">
<option value="1" <?php echo $selected=($nbr_h == 1)?'selected':''; ?>>1 heure</option>
<option value="2" <?php echo $selected=($nbr_h == 2)?'selected':''; ?>>2 heures</option>
<option value="3" <?php echo $selected=($nbr_h == 3)?'selected':''; ?>>4 heures</option>
<option value="4" <?php echo $selected=($nbr_h == 4)?'selected':''; ?>>8 heures</option>
</select>

ceci dit, ce serait plus rapide avec un tableau.

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 120 internautes nous ont dit merci ce mois-ci

Commenter la réponse de malalam
Messages postés
1218
Date d'inscription
mardi 20 décembre 2005
Statut
Membre
Dernière intervention
18 octobre 2012
3
0
Merci
<option value="1 heure">1 heure</option>
Commenter la réponse de sidf
Messages postés
1218
Date d'inscription
mardi 20 décembre 2005
Statut
Membre
Dernière intervention
18 octobre 2012
3
0
Merci
mais tu auras un doublon
Commenter la réponse de sidf
Messages postés
29
Date d'inscription
jeudi 19 février 2004
Statut
Membre
Dernière intervention
14 février 2007
0
Merci
ou une boucle:



<form method="post" etc...>

<select name="nbr_h" size="1">

<? for( $i = 1; $i++; $i < 5){

$ii = 2 * $i;

echo "<option value="".$i."";

if( $i = $_POST["nbr_h"]) echo " selected";

echo ">".$ii." heures</option>";

}

?>

</select>

</form>
Commenter la réponse de supergyver
Messages postés
10918
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
17
0
Merci
Soyons fou ;-)
<style>
option:after {
content: ' heure(s)';
}
</style>
<?php
$heures = array (1, 2, 3, 4);
foreach ($heures as $val) { $selected ($val $nbr_h)?'selected="selected":'';
echo '<option value="',$val*2,'" ',$selected,'>', $val, </option>';
}
?>
Commenter la réponse de malalam
Messages postés
3
Date d'inscription
dimanche 28 septembre 2003
Statut
Membre
Dernière intervention
8 février 2006
0
Merci
Vous êtes trop fort, mais soyez pas trop fou quand même, moi je suis juste trop débutant!

Bah je teste demain matin au boulot et je vous redis! mais merci mille fois pour les réponses!

Le Coyote fou
Commenter la réponse de seb_acsg
Messages postés
1218
Date d'inscription
mardi 20 décembre 2005
Statut
Membre
Dernière intervention
18 octobre 2012
3
0
Merci
<style>

option:after {

content: ' heure(s)';

}

</style>

<?php

$heures = array (1, 2, 3, 4);

foreach ($heures as $val) {

$selected ($val $nbr_h)?'selected="selected" ' :'';

echo '<option value ="',$val*2,'" ',$selected,'>', $val, '</option>';

}

?>



excellent malalam (je me suis permis de rajouter deux quotes au
cas où - risqué parce que ton niveau me fait douter, mais bon...) merci
pour tous ces tuyaux. j'avoue que la virgule pour concaténer, c'est
moins évident à lire , mais on doit s'y faire...
Commenter la réponse de sidf
Messages postés
2368
Date d'inscription
mercredi 13 octobre 2004
Statut
Membre
Dernière intervention
18 avril 2015
3
0
Merci
Sauf que pour le moment... :after n'est pris en compte que par Gecko :)

Faut attendre IE7 pour les autres (moi perso, jm'en tamponne :p)
Commenter la réponse de FhX
Messages postés
10918
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
17
0
Merci
Boah là cétait pour dire qu'on pouvait s'amuser, avec les répétitions..., mais en effet ça marche po avec IE 6 :-( Et moi j'm'en tamponne pas parce que c'est drôlement pratique, :after, ou :before, quand on a de looongues listes, ou pour les labels, etc. Nan nan, chouette propriété je trouve :-)
Commenter la réponse de malalam
Messages postés
3
Date d'inscription
dimanche 28 septembre 2003
Statut
Membre
Dernière intervention
8 février 2006
0
Merci
Merci beaucoup,

J'ai pas passé par desboucles parce que j'ai pas mal de champs et ils sont loin d'avoir tous les mêmes propriétés! mais merci encore pour l'aide! Tout roule maintenant!

Le Coyote fou
Commenter la réponse de seb_acsg