2013-03-12 78 views
0

我需要在下一年的所有星期一填写表单上的下拉列表,并显示所有星期一的日期。PHP/MySQL - 显示当年所有星期一的日期列表

这样做的最好方法是什么?用MySQL表填充日期,还是有一种更智能的方法来生成这些日期而不需要MySQL?

所需的输出会是这样的:

enter image description here

所选择的选项也只是日起,所以对于图像中的第一个选项,11 Mar 13将是价值的价值。

感谢您的帮助和道歉,如果这是一个愚蠢的问题。

+0

虽然人的帮助,以帮助它有礼貌地先尝试自己的事情。你试过什么样的解决方案,你有什么问题。这也可以阻止人们回答你可能犯的同样的错误,或者在回答你的问题时企图丢弃。 – Ben 2013-03-12 11:16:26

+2

http://stackoverflow.com/questions/2045736/getting-all-dates-for-mondays-and-tuesdays-for-the-next-year可能的重复? – 2013-03-12 11:16:40

+1

最好的办法是在php中完成,而不是使用数据库。我不知道你会怎么想把日期放到数据库中。 – Popnoodles 2013-03-12 11:17:08

回答

3

编辑:修改,可支持在开始日期传球而不是简单的一年

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'); 

输出作为一个下拉的格式应该是一个简单的锻炼

1

您可以简单地使用PHP,然后使用DateTime::add方法。然后你可以采取一年的第一个星期一,并使用该方法增加7天52次。那会给你所有的星期一。如果您添加6天,您将获得截止日期。

1

这段代码将输出你想

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

相关问题