J'ai actuellement un formulaire construit dans lequel, après validation, si des erreurs existent, les données restent à l'écran pour le consommateur à corriger. Un exemple de la façon dont cela fonctionne pour dire « Année de naissance » est:Problème avec la valeur 'sélectionnée' dans le formulaire
<select name="DOB3">
<option value="">Year</option>
<?php
for ($i=date('Y'); $i>=1900; $i--)
{
echo "<option value='$i'";
if ($fields["DOB3"] == $i)
echo " selected";
echo ">$i</option>";
}
?>
</select>
Si une erreur est trouvée, l'année de la valeur de naissance retourne l'année précédente est entré. Je suis capable d'avoir ce travail sur tout le champ à l'exception de mon champ 'Etat'. Je construis le tableau et la fonction de la chute vers le bas avec le code suivant:
<?php
$states_arr = array('AL'=>"Alabama",'AK'=>"Alaska",'AZ'=>"Arizona",'AR'=>"Arkansas",'CA'=>"California",'CO'=>"Colorado",'CT'=>"Connecticut",'DE'=>"Delaware",'DC'=>"District Of Columbia",'FL'=>"Florida",'GA'=>"Georgia",'HI'=>"Hawaii",'ID'=>"Idaho",'IL'=>"Illinois", 'IN'=>"Indiana", 'IA'=>"Iowa", 'KS'=>"Kansas",'KY'=>"Kentucky",'LA'=>"Louisiana",'ME'=>"Maine",'MD'=>"Maryland", 'MA'=>"Massachusetts",'MI'=>"Michigan",'MN'=>"Minnesota",'MS'=>"Mississippi",'MO'=>"Missouri",'MT'=>"Montana",'NE'=>"Nebraska",'NV'=>"Nevada",'NH'=>"New Hampshire",'NJ'=>"New Jersey",'NM'=>"New Mexico",'NY'=>"New York",'NC'=>"North Carolina",'ND'=>"North Dakota",'OH'=>"Ohio",'OK'=>"Oklahoma", 'OR'=>"Oregon",'PA'=>"Pennsylvania",'RI'=>"Rhode Island",'SC'=>"South Carolina",'SD'=>"South Dakota",'TN'=>"Tennessee",'TX'=>"Texas",'UT'=>"Utah",'VT'=>"Vermont",'VA'=>"Virginia",'WA'=>"Washington",'WV'=>"West Virginia",'WI'=>"Wisconsin",'WY'=>"Wyoming");
function showOptionsDrop($array, $active, $echo=true){
$string = '';
foreach($array as $k => $v){
$s = ($active == $k)? ' selected="selected"' : '';
$string .= '<option value="'.$k.'"'.$s.'>'.$v.'</option>'."\n";
}
if($echo) { echo $string;}
else { return $string;}
}
?>
J'appelle alors la fonction à partir de la forme en utilisant:
<td><select name="State"><option value="">Choose a State</option><?php showOptionsDrop($states_arr, null, true); ?></select></td>
Je ne sais pas ce que je suis absent, mais aimerais toute aide si quelqu'un voit l'erreur dans mon code.
Merci!
merci pour l'endroit. J'ai regardé cette ligne pendant une heure maintenant! Que voulez-vous dire en particulier en séparant le PHP et le HTML, en particulier dans cette instance particulière. J'ai besoin de créer un formulaire avec des critères de sélection des années et de le faire en premier lieu laisse beaucoup de code. – JM4
@ JM4: Voir ma mise à jour. En fait, ce n'est pas trop mal (je pensais qu'il serait peut-être préférable de générer les valeurs au préalable, mais cela ne fait pas de différence). Mais imo, la syntaxe alternative est beaucoup plus lisible et il est plus facile de repérer les erreurs dans votre HTML. Mais vous pouvez envisager de définir l'année en cours et l'année jusqu'à un peut sélectionner à l'avance. –