-4

I'm using the code below to auto fill the option values for a drop-down. I'm have trying getting it to have the number 30 selected. Right now it's displaying the number 30 twice out of sequence. how would I get that sequence to display 18-75 with 30 pre-selected.

<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>
4

6 回答 6

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>
于 2013-07-01T06:26:24.667 回答
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>
于 2013-07-01T06:18:05.507 回答
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>
于 2013-07-01T06:21:35.973 回答
3

30 不按顺序显示,因为您没有将语句包含在一组大括号中,因此for循环仅在第一行循环。30 仅在整个循环完成后打印,即在$k == 75.

$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>
于 2013-07-01T06:25:32.687 回答
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>
于 2013-07-01T06:21:58.220 回答
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>
于 2013-07-01T06:22:47.303 回答