问题与foreach获得正确的结果

时间:2020-07-20 11:59:02

标签: php indexing foreach

我有以下代码来生成带有下达订单的HTML表。

// Select data FROM ORDER & ORDERLINE
        $id = $value->ID;
        $datenow = date("Y-m-d");
        $temp = 0;
        $stmt2 = $mysql->prepare("SELECT salesorder.order_id AS soid, salesorder.delivery_date AS sdd, orderline.qty AS olq, food.food_type AS fft
                                FROM orderline
                                INNER JOIN salesorder ON salesorder.order_id = orderline.order_id
                                INNER JOIN food ON food.food_id = orderline.food_id
                                WHERE salesorder.client_id=? AND orderline.qty!=?
                                ORDER BY sdd");
        $stmt2->bind_param('ss', $id, $temp);
        $stmt2->execute();
        $result2 = $stmt2->get_result();
        
    // determen if there are orders to display
    if (mysqli_num_rows($result2) > 0) {
        
        while ($value2 = $result2->fetch_object()) {
        $results[] = $value2; 
        }
    ?>

    <table class="center table">
            <thead>
                <tr>
                    <th>Order Number</th>
                    <th>Delivery Date</th>
                    <th>QTY</th>
                    <th>Food Type</th>
                </tr>
            </thead>
            <tbody>
                <b>Delivered orders :</b> (and orders delivered today...)
                <?php foreach ( $results as $result ) : ?>
                <?php if (($result->sdd)<=$datenow) { ?>
                        <td><?php echo ($result->soid); ?></td>
                        <td><?php echo ($result->sdd); ?></td>
                        <td><?php echo ($result->olq); ?></td>
                        <td><?php echo ($result->fft); ?></td>                      
                    </tr>
                <?php } ?>
                <?php endforeach;?>
            </tbody>
        </table>

问题在于“交货日期”和“订单号” ALSO的显示次数与数量和食品类型一样多。我知道这与索引有关,但是无论如何,我都找不到正确的语法或方法。有任何想法吗? 我已将数据表添加为图像。请让我知道...

2 个答案:

答案 0 :(得分:1)

  1. 您需要在foreach内打开<tr>标签
  2. 您可以直接将数组mysqli_fetch_assoc循环返回数组,然后为什么要存储到$results[]数组中,

答案 1 :(得分:0)

根据您对Eibs另一个答案的评论,请检查以下内容是否满足您的需求。首先,当您循环结果时,我们将创建一个按订单号和日期分组的关联数组,并将每个项目添加到items数组。然后,当创建表时,我们循环结果数组,然后是项数组。我仅使用单独的行是因为您具有标题行,但是,使用这种相同的方法,您可以设计表输出的多种不同方式。

update