翌年のすべての月曜日の日付をフォームのドロップダウンリストに入力する必要がありますか?
これを行うための最良の方法は何ですか?MySQLテーブルに日付が入力されている場合、またはMySQLを必要とせずにこれらの日付を生成するよりスマートな方法はありますか?
必要な出力は次のようになります。
選択したオプションの値は開始日だけなので、画像の最初のオプションの場合11 Mar 13
は値になります。
これがばかげた質問であるならば、助けと謝罪に感謝します。
編集:単に1年ではなく開始日の通過をサポートするように変更されました
function getDays($year, $startMonth=1, $startDay=1, $dayOfWeek='monday') {
$start = new DateTime(
sprintf('%04d-%02d-%02d', $year, $startMonth, $startDay)
);
$start->modify($dayOfWeek);
$end = new DateTime(
sprintf('%04d-12-31', $year)
);
$end->modify( '+1 day' );
$interval = new DateInterval('P1W');
$period = new DatePeriod($start, $interval, $end);
foreach ($period as $dt) {
echo $dt->format("d/m/Y") . '<br />';
}
}
getDays(2013, 3, 12, 'monday');
ドロップダウンとしての出力のフォーマットは簡単な演習である必要があります
DateTime::addメソッドPHP
を使用するだけです。次に、年の最初の月曜日を取り、メソッドを使用して 7 日間を 52 回追加します。それはあなたにすべての月曜日を与えるでしょう。6 日を追加すると、期限日が得られます。
このコードは、必要な日付のリストを出力します
for($i = 0; $i <= 365; $i ++){
$startdate = strtotime("today + $i day");
$enddate = strtotime("today + " . ($i + 6) . " day");
if(date('D', $startdate) == 'Mon'){
echo date('d M y', $startdate) . " to " . date('d M y', $enddate) . "\n";
}
}
この表示をドロップダウン リストとして表示するには、次のように HTML を追加する必要があります。
<select id="date" name="date">
<?
for($i = 0; $i <= 365; $i ++){
$startdate = strtotime("today + $i day");
$enddate = strtotime("today + " . ($i + 6) . " day");
if(date('D', $startdate) == 'Mon'){
echo '<option value="' . date('d-m-Y', $startdate) . '">' .date('d M y', $startdate) . " to " . date('d M y', $enddate) . "</option>";
}
}
?>
</select>
value
選択オプションに月曜日の日付の形式を指定dd-mm-yyyy
したので、送信されたフォームを処理すると、選択された月曜日が表示されます。したがって、行を選択し27 May 13 to 02 Jun 13
てフォームを送信すると、フォームの反対側の php ファイルには変数が含まれ、その$_POST['date']
値は になります27-05-2013
。