Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP-如何显示餐厅预订_Php_Mysql_Pdo - Fatal编程技术网

PHP-如何显示餐厅预订

PHP-如何显示餐厅预订,php,mysql,pdo,Php,Mysql,Pdo,我目前有一个重新安装的预订数据库。这包含他们想要的菜单。这是我的sql查询显示的内容,也是我希望在网站上显示的内容 显示两个订单,以及每个订单的所有菜单项。我想在我的网站上显示为两个单独的订单。 我的PHP代码如下所示,使用PDO,不包括数据库连接和查询等 $resultset = $conn->query($query, PDO::FETCH_OBJ); while($result=$resultset->fetch()) {

我目前有一个重新安装的预订数据库。这包含他们想要的菜单。这是我的sql查询显示的内容,也是我希望在网站上显示的内容

显示两个订单,以及每个订单的所有菜单项。我想在我的网站上显示为两个单独的订单。 我的PHP代码如下所示,使用PDO,不包括数据库连接和查询等

        $resultset = $conn->query($query, PDO::FETCH_OBJ);

        while($result=$resultset->fetch())
        {
                echo "Order Details:<br> CustomerID: $result->CustomerID<br>PaymentID: 
$result->PaymentID<p>
        Booking Details:<br> Date: $result->Date<br> 
    Time: $result->Time <p>Menu Items:<br>";

            echo "$result->MealName x$result->Quantity<br>";
        }
    ?>  
我只希望每个订单显示一次customerID/PaymentID,下面显示所有项目


我该怎么做呢?

您可能希望根据预订id进行分组,因为客户可以在同一天下多个订单。也就是说,我会先按客户id然后按预订id对查询进行排序。然后调整您的循环,以便它能够检测到预订id与上次迭代时的更改。完成时,输出客户信息。大概是这样的:

$last = null;
while (...) {
    if ($result->ReservationID !== $last) {
        // output per-order header
    }
    // output item details
    $last = $result->ReservationID;
}
或者,您可以分两步来完成这项工作——首先获取今天的订单列表,然后为每个订单显示详细信息。这是一种更面向对象的方法。您必须为每个对象编写一个类。例如:

$restaurant = new Restaurant($id);
foreach ($restaurant->getOrdersForDate($today) as $order) {
    $order->render();
}
其中Order::render()方法类似于:

public function render() {
    $this->renderHeader();
    foreach ($this->getItems() as $item) {
        $item->render();
    }
    $this->renderFooter();
}
public function render() {
    $this->renderHeader();
    foreach ($this->getItems() as $item) {
        $item->render();
    }
    $this->renderFooter();
}