我想根据order_id以降序显示我数据库中的所有订单
im使用while循环显示order_id,order_date和客户信息。
使用此循环时,它会重复多次order_id并将每个产品放入另一个订单显示中。
例如,订单13包含3个产品,因此订单13重复了3次
<?php
include '../php_action/db_connect.php';
$sql="SELECT * FROM orders left join order_item on orders.order_id=order_item.order_id left join products on products.product_id=order_item.product_id left join category on products.category_id=category.category_id order by orders.order_id desc";
$result=$connect->query($sql);
while($row=$result->fetch_array())
{
?>
<form action="" class="checkout-form" method="POST">
<div class="row">
<div class="col-lg-12">
<div class="place-order">
<h4>Order number # <?php echo $row['order_id']?> Order Date : <?php echo $row['order_date']?></h4>
<div class="order-total">
<ul class="order-table">
<li>Product <span>Total</span></li>
<li class="fw-normal"><?php echo $row["product_name"].' - '.$row['category_name'].'<br>'. $row['product_weight'].'KG ' .' X ' .number_format($row["product_price"],0).' LBP'?> <span><?php echo 'LBP '.number_format($row['total'],0)?></span></li>
<li class="fw-normal">Subtotal <span><?php echo 'LBP '.number_format($row['subtotal'],0)?></span></li>
<li class="total-price" style="font-size:1.3em">Total <span><?php echo 'LBP '.number_format($row['grandtotal'],0)?> </span></li>
</ul>
<div class="payment-check">
<div class="pc-item">
<label for="pc-check">
<?php
echo 'ORDER DATE: '.$row['order_date'];
echo '<br>';
echo 'FIRST NAME: '.$row['client_firstname'];
echo '<br>';
echo 'LAST NAME: '.$row['client_lastname'];
echo '<br>';
echo 'PHONE: '.$row['client_phone'];
echo '<br>';
echo 'CITY: '.$row['client_city'];
echo '<br>';
echo 'ADDRESS: '.$row['client_address'];
echo '<br>';
echo 'BLDG: '.$row['client_bldg'];
echo '<br>';
echo 'FLOOR NO: '.$row['client_floor'];
echo '<br>';
echo '<br>';
echo 'PAYMENT METHOD: Cash On Delivery';
?>
</label>
</div>
</div>
</div>
</div>
</div>
</div>
</form>
<?php } ?>
我想显示订单号和订单日期,并且要在订单表中显示表order_item中的所有产品,其中order_item.order_id = order.order_id
这应该如何工作?我的错误在哪里,我该如何解决?
您可以通过许多不同的方法来实现,这是一种非常简单的方法,可用于显示所需的结果。
您还可以为product_price
和order_date
等值设置所需的格式。>
<?php
include '../php_action/db_connect.php';
$sql="SELECT * FROM orders left join order_item on orders.order_id=order_item.order_id left join products on products.product_id=order_item.product_id left join category on products.category_id=category.category_id order by orders.order_id desc";
$result=$connect->query($sql);
$orders = [];
while($row=$result->fetch_array())
{
$order_id = $row['order_id'];
if(!in_array($order_id, array_keys($orders))){
//Save Order details once
$orders[$order_id]['order_id'] = $row['order_id'];
$orders[$order_id]['total'] = $row['total'];
$orders[$order_id]['subtotal'] = $row['subtotal'];
$orders[$order_id]['grandtotal'] = $row['grandtotal'];
$orders[$order_id]['client_firstname'] = $row['client_firstname'];
$orders[$order_id]['client_lastname'] = $row['client_lastname'];
$orders[$order_id]['client_phone'] = $row['client_phone'];
$orders[$order_id]['client_city'] = $row['client_city'];
$orders[$order_id]['client_address'] = $row['client_address'];
$orders[$order_id]['client_bldg'] = $row['client_bldg'];
$orders[$order_id]['client_floor'] = $row['client_floor'];
}
//Push Products into the Order
$orders[$order_id]['products'][] = [
'product_name'=> $row['product_name'],
'category_name'=> $row['category_name'],
'product_weight' => $row['product_weight'],
'product_price' => $row['product_price'],
'total' => $row['total'],
'qty' => 2,
];
}
foreach($orders as $row){
?>
<form action="" class="checkout-form" method="POST">
<div class="row">
<div class="col-lg-12">
<div class="place-order">
<h4>Order number # <?php echo $row['order_id']?> Order Date : <?php echo $row['order_date']?></h4>
<div class="order-total">
<ul class="order-table">
<!-- Loop through all the products for the current order -->
<?php foreach($row['products'] as $product){ ?>
<li>Product <span>Total</span></li>
<li class="fw-normal"><?php echo $product["product_name"].' - '.$product['category_name'].'<br>'. $product['product_weight'].'KG ' .' X ' .number_format($product["product_price"],0).' LBP'?> <span><?php echo 'LBP '.number_format($product['total'],0)?></span></li>
<?php } ?>
<li class="fw-normal">Subtotal <span><?php echo 'LBP '.number_format($row['subtotal'],0)?></span></li>
<li class="total-price" style="font-size:1.3em">Total <span><?php echo 'LBP '.number_format($row['grandtotal'],0)?> </span></li>
</ul>
<div class="payment-check">
<div class="pc-item">
<label for="pc-check">
<?php
echo 'ORDER DATE: '.$row['order_date'];
echo '<br>';
echo 'FIRST NAME: '.$row['client_firstname'];
echo '<br>';
echo 'LAST NAME: '.$row['client_lastname'];
echo '<br>';
echo 'PHONE: '.$row['client_phone'];
echo '<br>';
echo 'CITY: '.$row['client_city'];
echo '<br>';
echo 'ADDRESS: '.$row['client_address'];
echo '<br>';
echo 'BLDG: '.$row['client_bldg'];
echo '<br>';
echo 'FLOOR NO: '.$row['client_floor'];
echo '<br>';
echo '<br>';
echo 'PAYMENT METHOD: Cash On Delivery';
?>
</label>
</div>
</div>
</div>
</div>
</div>
</div>
</form>
<?php } ?>