PHP创建从当月开始的选择框

时间:2012-02-01 23:48:47

标签: php

我有一个包含以下值的选择框(一年中的几个月):

<label for="select_month">Month: </label>
<select id="select_month" name="month">
<option value="01">01</option>
<option value="02">02</option>
<option value="03">03</option>
<option value="04">04</option>
<option value="05">05</option>
<option value="06">06</option>
<option value="07">07</option>
<option value="08">08</option>
<option value="09">09</option>
<option value="10">10</option>
<option value="11">11</option>
<option value="12">12</option>
</select>

我想要实现的是使用当前月份的PHP,并将其作为默认选择框中的默认选项。

如何使用干净的代码执行此操作?

5 个答案:

答案 0 :(得分:4)

for ($i = 1; $i <= 12; $i++)
(
    $month = ($i < 10) ? '0'.$i : $i;
    echo '<option value="'.$month.'"';
    if ($i == date("n")) echo ' selected="selected"';
    echo '>'.$month.'</option>';
)

我无法测试这个,因为我在手机上,但这应该可以解决问题。

答案 1 :(得分:2)

也许是这样的?

<select name="month">
<?php foreach(range('1', '12') as $m) : ?>
    <option value="<?php echo $m; ?>" <?php if (date('n') == $m) { echo 'selected="selected"'; } ?>>
        <?php echo $m ?>
     </option>
<?php endforeach; ?>
</select>

答案 2 :(得分:1)

这是我的两分钱:

<label for="select_month">Month: </label>
<select id="select_month" name="month">

<?php

 for($i = 1; $i <= 12; $i++) {
  $isCurrentMonth = ($i == intVal(date("m"))) ? 'true': 'false';
  echo "<option value=\"$i\" selected=\"$isCurrentMonth\">$i</option>\n";
 }

?>

</select>

答案 3 :(得分:1)

使用与Pratt的答案类似的结构,但使用两位数的月份值(就像您在示例中所做的那样)。它使用date('m')而不是date('n'),因为似乎没有任何方法可以在PHP范围内获得前导零,所以我使用了一个数组。

<select name="month">
<?php foreach(array('01','02','03','04','05','06','07','08','09','10','11','12') as $m) : ?>
    <option value="<?php echo $m; ?>" <?php if (date('m') == $m) { echo 'selected="selected"'; } ?>>
        <?php echo $m ?>
     </option>
<?php endforeach; ?>
</select>

答案 4 :(得分:0)

<option value="01" <?php echo (1 == date("n") ? 'selected="selected"' : ''); ?>>01</option>

这必须针对每个选项进行 - 在这种情况下for循环可能会很好。