0

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

例如,今天是 23 日,第一个可用选项的日期为 2013-05-25。在接下来的 9 天里,将增加 9 个额外的选项。

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

我想知道如何快速将这些生成到选择框上的选项中?

4

2 回答 2

3

像这样的东西应该可以解决问题(未经测试):

// 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循环。看这里这里
  2. strtotime()功能,请参阅此处的文档
  3. 最后是date()函数,请参阅此处的文档
于 2013-05-22T23:46:10.877 回答
0

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

echo "<select name='date'>";
for($i=3;$i<=12;$i++){
   echo "<option>".date("Y-m-d",strtotime("+$i days"))."</option>";        
}
echo "</select>";
于 2013-05-22T23:40:21.867 回答