使用php获取未来5天的预约
我正在尝试编写一个脚本来提取未来7天的日期,并将它们放入每个日期的div中:使用php获取未来5天的预约,php,datetime,Php,Datetime,我正在尝试编写一个脚本来提取未来7天的日期,并将它们放入每个日期的div中: echo '<div class="dateboxcontainer">'; for($i=0; $i<=6; $i++){ echo '<div class="datebox"><div class="topdate">'.strtoupper(date("D d", mktime(0, 0, 0, 0, date("d")+$i, 0))."
echo '<div class="dateboxcontainer">';
for($i=0; $i<=6; $i++){
echo '<div class="datebox"><div class="topdate">'.strtoupper(date("D d", mktime(0, 0, 0, 0, date("d")+$i, 0))."\n").
'</div><div class="bottomdate">An appointment for the day</div></div>';
}
echo '</div>';
但我不太确定如何将该行的jobdetails中存储的日期与回显的日期进行比较
编辑>>>>>>
感谢下面的答案,iv设法得出了以下结论,它回显了日期框ok,但没有带来任何数据,因此我不确定sql部分是否正确
echo '<div class="dateboxcontainer">';
$eventdata = <<<SQL
SELECT *
FROM `jobdetails`
SQL;
if(!$events = $db->query($eventdata)){
die('There was an error running the query [' . $db->error . ']');
}
// read first event
if ($nextEvent = mysql_fetch_assoc($events)) { // here is the first one
extract($nextEvent); // prepare its variables
// use the event date it to control the inner loop
$nextDate = $datedroppingoff;
} else // no events?
$nextDate = 0; // prepare a fake date value
// calculate today date
$currentDate = mktime();
// loop on the dates for the next 7 days
for ($i = 0 ; $i < 7; $i++) {
$currentEvents = "";
// loop to print every event for current day (first one already extracted)
while ($nextDate == date("Y-m-d", $currentDate)) { // next event occurs today
// here prepare the var containing the event description
// BTW, I'd use a list for the events
$currentEvents .= "· $name<br>"; // use every field you need from current DB row
// read next event
if ($nextEvent = mysql_fetch_assoc($events)) { // here is the next one
extract($nextEvent); // prepare its variables
// use the event date it to control the inner loop
$nextDate = $datedroppingoff;
} else // no more events?
$nextDate = 0; // prepare a fake date value
}
echo "
<div class='datebox'>
<div class='topdate'>" . strtoupper(date("D d m Y", $currentDate)) . "</div>
<div class='bottomdate'>$currentEvents</div>
</div>";
$currentDate = strtotime("+1 day", $currentDate);
}
echo '</div>';
echo';
$eventdata=您可以使用如下内容:
SELECT * FROM `jobdetails` WHERE (`datedroppingoff ` > '2013-07-01 00:00:00' AND `datedroppingoff ` '2013-07-02 00:00:00') OR (`datepickingup ` > '2013-07-01 00:00:00' AND `datepickingup ` '2013-07-02 00:00:00');
这必须每天重复(即,每5天重复一次)
要做一个很好的循环,请使用一个数组,数组中填充了接下来的5个日期作为字符串。然后对日期进行foreach并运行此查询。您可以使用以下方法:
SELECT * FROM `jobdetails` WHERE (`datedroppingoff ` > '2013-07-01 00:00:00' AND `datedroppingoff ` '2013-07-02 00:00:00') OR (`datepickingup ` > '2013-07-01 00:00:00' AND `datepickingup ` '2013-07-02 00:00:00');
这必须每天重复(即,每5天重复一次)
要做一个很好的循环,请使用一个数组,数组中填充了接下来的5个日期作为字符串。然后对日期进行foreach并运行此查询。如果您想要从现在开始以及未来5天的所有日期,您可以使用:
WHERE
`datedroppingoff` BETWEEN NOW() AND DATE_ADD(NOW(), INTERVAL 5 DAY) OR
`datepickingup ` BETWEEN NOW() AND DATE_ADD(NOW(), INTERVAL 5 DAY)
如果您想要从现在起以及未来5天的所有日期,您可以使用:
WHERE
`datedroppingoff` BETWEEN NOW() AND DATE_ADD(NOW(), INTERVAL 5 DAY) OR
`datepickingup ` BETWEEN NOW() AND DATE_ADD(NOW(), INTERVAL 5 DAY)
让我们看看我将如何继续(顺便说一下,这是我的第一个答案,所以我有点兴奋…)
首先,这个超快脚本的一些基本假设(对不起,现在没有太多时间来彻底测试它)
- 您的约会表有一个带有约会日期的字段
- 结果资源($events)仅包含当前周的行
- 结果行按日期字段按升序排序(从最早到最新)
试试这个(对不起,我对你原来的代码做了一点修改)
让我们看看我将如何继续(顺便说一下,这是我的第一个答案,所以我有点兴奋…)
首先,这个超快脚本的一些基本假设(对不起,现在没有太多时间来彻底测试它)
- 您的约会表有一个带有约会日期的字段
- 结果资源($events)仅包含当前周的行
- 结果行按日期字段按升序排序(从最早到最新)
试试这个(对不起,我对你原来的代码做了一点修改)
我最后用了这个,似乎很管用!:)
//日期框容器
回声';
//循环浏览并创建未来7天的日期
$days=新的日期周期(新的日期时间,新的日期间隔('P1D'),7);
foreach($天作为$天){
回声';
回声';
echo strtoupper($day->format('D')).PHP\u EOL;
回声';
//得到每天的名字
$theday=strotupper($day->format('Y-m-d'));
$sqldate=fetch_assoc()){
echo$rowdate['name'];
}
//
回声';
}
回声';
//
我最后用了这个,看起来很管用!:)
//日期框容器
回声';
//循环浏览并创建未来7天的日期
$days=新的日期周期(新的日期时间,新的日期间隔('P1D'),7);
foreach($天作为$天){
回声';
回声';
echo strtoupper($day->format('D')).PHP\u EOL;
回声';
//得到每天的名字
$theday=strotupper($day->format('Y-m-d'));
$sqldate=fetch_assoc()){
echo$rowdate['name'];
}
//
回声';
}
回声';
//
WHERE(date(datedroppingoff)>='startdate'和date(datedroppingoff)='startdate'和date(datedroppingup)如何在接下来的7天内将其添加到for循环中,这就是我遇到的问题?WHERE(date(datedroppingoff)>='startdate'和date(datedroppingoff)='startdate'和date(date)如何将其添加到for循环中在接下来的7天里,我如何将其添加到for循环中,这就是我遇到的问题。我如何将其包装到for循环中,以便它显示在day div中?可能最好这样做(不是循环查询,而是在开始循环之前)然后处理结果集中的数据,而不是在每天的迭代中运行查询。如何将其包装到for循环中,使其显示在day div中?可能最好这样做(不是循环查询,而是在开始循环之前)然后处理结果集中的数据,而不是在每天的迭代中运行查询。为此,我只想编辑我的问题并添加sql数据库查找,因为我认为我弄得一团糟!:-您的脚本中有一个问题:您得到的是所有约会,而不仅仅是本周的约会(第二个假设)。您应该使用其他答案之一。无论如何,如果您可以添加一个“jobdetails”表转储,我想我也可以编写DB查找部分以在此处集成。我总是不太愿意在循环中插入DB查询,我发现它耗时且系统开销过大(您调用SQL server 7次,如果您有3个月的时间来显示,那就太糟糕了)。通常我更喜欢得到正确的结果,然后遍历它们。为此,我只想编辑我的问题并添加sql数据库查找,因为我认为我把它弄得一团糟!:-你的脚本中有一个问题:你得到了所有的约会,而不仅仅是本周的约会(第二个假设)。您应该使用其他答案之一。无论如何,如果您可以添加一个“jobdetails”表转储,我想我也可以编写DB查找部分以在此处集成。我总是不太愿意在循环中插入DB查询,我发现它耗时且系统开销过大(您调用SQL server 7次,如果您有3个月的时间来显示,那就太糟糕了).通常我更喜欢得到正确的结果,然后遍历它们。
$nextDate = $DB_field_with_event_date;
// Date box container
echo '<div class="dateboxcontainer">';
// Loop through and create a date for the next 7 days
$days = new DatePeriod(new DateTime, new DateInterval('P1D'), 7);
foreach ($days as $day) {
echo '<div class="datebox">';
echo '<div class="topdate">';
echo strtoupper($day->format('D d')) . PHP_EOL;
echo '</div>';
// Get the names for each day
$theday = strtoupper($day->format('Y-m-d'));
$sqldate = <<<SQL
SELECT *
FROM `jobdetails`
WHERE datedroppingoff = '$theday' OR datepickingup = '$theday'
SQL;
if(!$resultdate = $db->query($sqldate)){
die('There was an error running the query [' . $db->error . ']');
}
while($rowdate = $resultdate->fetch_assoc()){
echo $rowdate['name'];
}
//
echo '</div>';
}
echo '</div>';
//