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>";

}

上記で何が起こっているかを理解するには、次の 3 つのことがどのように機能するかを理解する必要があります。

  1. forforeachループします。こちらとこちらをご覧ください
  2. strtotime()関数については、こちらのドキュメントを参照してください
  3. 最後に、date()関数については、こちらのドキュメントを参照してください
于 2013-05-22T23:46:10.877 に答える
0

2 日から始まる次の 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 に答える