给定日期,我如何生成包含后续日期的下拉列表?

时间:2013-05-22 23:33:05

标签: php html

我为用户创建了一个表格来申请课程。每个单独的记录将被添加到表格提交表格中,但我不知道如何在日期的选择框中自动生成选项。理想情况下,我希望选择框在当前日期的2天内生成10天的日期。

例如,今天是23日,第一个选项将于2013-05-25过时。接下来的九天将增加九个选项。

<select name="day1">
    <option value="2013-05-25">Sat, 25th May 2013</option>
    <option value="2013-05-26">Sun, 26th May 2013</option>
</select>

我想知道如何在选择框中快速生成这些选项?

2 个答案:

答案 0 :(得分:2)

这样的事情应该成功(未经测试):

// Create the dates array
$dates = array();

// Loop through 9 times (9 days)
for($i=0;$i<9;$i++){
    // Set the timestamp
    // This starts in 2 days
    $timestamp = strtotime('+ '.(2+$i).' days');
    // Set the date value
    $date = date('Y-m-d',$timestamp);
    // Set the formatted date value
    $date_formatted = date('D, js F Y',$timestamp);
    // Place the date into the $dates array
    $dates[$date] = $date_formatted;
}

然后循环遍历$dates数组,如下所示:

echo "<select name=\"day1\">";

foreach($dates as $key=>$value){
   echo "<option value=\"$key\">$value</option>";
}

echo "</select>";

此外,如果您想创建其中几个选择框,请将它们放在for循环中,如下所示:

// This will create 5 select boxes
for($i=0;$i<5;$i++){

    echo "<select name=\"day$i\">";

    foreach($dates as $key=>$value){
       echo "<option value=\"$key\">$value</option>";
    }

    echo "</select>";

}

为了理解上面发生的事情,你需要了解三件事如何运作:

  1. forforeach循环。请参阅herehere
  2. strtotime()功能,请参阅文档here
  3. 最后,date()函数,请参阅文档here

答案 1 :(得分:0)

从两天开始的接下来的10天:

echo "<select name='date'>";
for($i=3;$i<=12;$i++){
   echo "<option>".date("Y-m-d",strtotime("+$i days"))."</option>";        
}
echo "</select>";