选择了PHP表单选项

时间:2013-07-01 06:16:08

标签: php selection

我正在使用下面的代码自动填充下拉列表的选项值。我已经尝试让它选择数字30。现在它正在显示数字30两次不按顺序。我如何让这个序列显示18-75预选30。

<select name="age2" class="numb">
<?php 
for ($k = 18; $k <= 75; $k++) 
echo '<option value='.sprintf("%02d", $k).'>'.sprintf("%02d", $k).'</option>'; 
echo '<option value=30 selected>30</option>';
?>
</select>

6 个答案:

答案 0 :(得分:4)

使用以下代码

<select name="age2" class="numb">
<?php 
for ($k = 18; $k <= 75; $k++) {
    $selected = '';
    if($k == 30){
        $selected = 'selected="selected"';
    } else {
        $selected = '';
    }
    echo '<option value='.sprintf("%02d", $k).' '.$selected.' >'.sprintf("%02d", $k).'</option>'; 

}
?>
</select>

答案 1 :(得分:3)

正确的方法是

<select name="age2" class="numb">
<?php 
for ($k = 18; $k <= 75; $k++) 
{
  if($k!=30)
  {
   echo '<option value='.sprintf("%02d", $k).'>'.sprintf("%02d", $k).'</option>'; 
  }
  else
  {
   echo '<option selected="selected" value='.sprintf("%02d", $k).'>'.sprintf("%02d", $k).'</option>'; 
  }
}   
?>
</select>

答案 2 :(得分:3)

您只需检查每次迭代中的值,并在值为30时回显。

<select name="age2" class="numb">
<?php 
for ($k = 18; $k <= 75; $k++){
  $value = sprintf("%02d", $k) ; ?>
  <option value='<?php echo $value ; ?>' <?php echo ($value == 30) ? "selected" : "" ; ?>><?php echo $value ; ?></option> 
<?php } ?>
</select>

答案 3 :(得分:3)

由于您没有在一组大括号中包含语句,因此

30不按顺序显示,因此for循环仅在第一行循环。然后仅在整个循环完成后,即在$k == 75之后打印30。

如果您以后需要更改数字,我建议您定义$default值:

<select name="age2" class="numb">
<?php 
    $default = 30;
    for ($k = 18; $k <= 75; $k++) {
        if ($k == $default) {
            echo '<option value=' . $default . 'selected>' . $default . '</option>';
        } else {
            echo '<option value='.sprintf("%02d", $k).'>'.sprintf("%02d", $k).'</option>';
        }
    }
?>
</select>

答案 4 :(得分:1)

您在每个循环迭代中添加30选项,您必须将其置于某种状态

    <select name="age2" class="numb">
<?php 
for ($k = 18; $k <= 75; $k++) {
if($k ==30)
{
 echo '<option selected="selected" value='.sprintf("%02d", $k).'>'.sprintf("%02d", $k).'</option>'; 

}
else
{
  echo '<option value='.sprintf("%02d", $k).'>'.sprintf("%02d", $k).'</option>'; 
}  

} 
?>
</select>

答案 5 :(得分:1)

<select name="age2" class="numb">
<?php 
for ($k = 18; $k <= 75; $k++) 
 echo '<option value='.sprintf("%02d", $k).  (if($k==30)?'selected="selected"':"").'>'.sprintf("%02d", $k).'</option>'; 
 }
?>
</select>