PHP打印每个日期的数据库日期数据

时间:2016-05-18 02:56:58

标签: php ms-access

我有一个名为Holidays的数据库,其中有一个日期字段用于保存名为STARTTIME的假日日期,还有一个持续时间字段用于保存名为DURATION的假日的天数。我希望在一个月和一年之间收集该表中的所有数据,并将日期打印为1。

例如,这是我在数据库中的数据:

STARTTIME  | DURATION
2016-12-09 | 1
2016-12-15 | 5

如何在每个日期用PHP 1打印1?所以它会导致:

2016-12-09
2016-12-15
2016-12-16
2016-12-17
2016-12-18
2016-12-19
2016-12-20

我的代码现在是这样的:

//startDate and endDate is get from my filter, this is only for example 
$startDate = '2016-01-01';
$endDate = '2016-01-31';
$sqlHol = "SELECT STARTTIME, DURATION FROM HOLIDAYS WHERE DATEVALUE(STARTTIME) BETWEEN DateAdd('m',-1,#$startDate#) AND #$endDate#";
$queryHol = $db->query($sqlHol);
$hols = $queryHol->fetchAll();
echo '<br />';
//testing to print out array result
print_r($hols);
//looping through data from database
foreach($hols as $hol)
{
    for($i=1; $i <= $hol[1]; $i++)
    {
        echo '<br />';
        $due = date_create($hol[0]);
        echo date_format($due, 'Y-m-d');
        $due = date_add(date_create($hol[0]), date_interval_create_from_date_string('1 days'));
        echo '<br />';
    }
}

这是我的结果(日期没有增加):

2015-12-09

2015-12-15

2015-12-15

2015-12-15

2015-12-15

2015-12-15

2015-12-15

任何人都知道如何创建我需要的输出?

1 个答案:

答案 0 :(得分:1)

在递增之前,您似乎正在编写截止日期。尝试使用循环计数器来跟踪您增加日期的次数。

foreach($hols as $hol)
{
    for($i=0; $i <= $hol[1]-1; $i++)
    {
        echo '<br />';
        $due = date_create($hol[0]);
        $due = date_add(date_create($hol[0]), date_interval_create_from_date_string(i.' days'));
        echo date_format($due, 'Y-m-d');
        echo '<br />';
    }
}