使用php获取未来5天的预约

使用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))."

我正在尝试编写一个脚本来提取未来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))."\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>';
    //