【发布时间】:2020-11-09 16:13:33
【问题描述】:
我有以下代码来生成包含已下订单的 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>
问题在于“交货日期”和“订单号”的显示次数与数量和食品类型一样多。我知道这与索引有关,但是无论我如何尝试,我都找不到正确的语法或方法。有任何想法吗? 我已将数据表添加为图像。请告诉我...
【问题讨论】:
-
首先,请停止创建无效的 HTML。您不能像这样直接将
b放入tbody。 -
“我知道这与索引有关” - 不,如果有的话,这与 type 无关您正在使用的 JOIN。 INNER JOIN 现在可能是您想要的。
-
您能否提供 3 个表 orderline、salesorder 和 food 的数据样本?
-
我插入了一张包含 3 张桌子的图片
-
您尝试检查哪些问题?为什么不从检查 SQL 查询开始 - 复制它,将其粘贴到 phpMyAdmin 或您使用的任何东西,然后检查返回的数据是否是您期望的数据