Php 在买方购物车中重置每个供应商的总计、每个供应商的汇总
问题是: 每件物品的价格为200.00美元,因此15件物品总共需要3000美元 这些商品来自不同的供应商,因此我需要根据买家选择的数量获得每个供应商的总数量。这是如何实现的 代码按预期工作,直到我尝试获得每个供应商的总计Php 在买方购物车中重置每个供应商的总计、每个供应商的汇总,php,mysql,Php,Mysql,问题是: 每件物品的价格为200.00美元,因此15件物品总共需要3000美元 这些商品来自不同的供应商,因此我需要根据买家选择的数量获得每个供应商的总数量。这是如何实现的 代码按预期工作,直到我尝试获得每个供应商的总计 <?php $user_ref = '00007939789'; $grand_total = 0; $sellers = array(); $fetch_sellers = mysqli_query($conn, " SELECT s_c_vendor FR
<?php
$user_ref = '00007939789';
$grand_total = 0;
$sellers = array();
$fetch_sellers = mysqli_query($conn, "
SELECT s_c_vendor
FROM shopping_cart
WHERE s_c_user_ref='$user_ref'
GROUP
BY s_c_vendor
");
if (mysqli_num_rows($fetch_sellers) > 0) {
while ($row = mysqli_fetch_assoc($fetch_sellers)) {
array_push($sellers, $row['s_c_vendor']);
}
for ($i=0; $i < count($sellers); $i++) {
$get_products = mysqli_query($conn, "
SELECT s_c_product
, s_c_qty
FROM shopping_cart
WHERE s_c_user_ref='$user_ref'
AND s_c_vendor = '$sellers[$i]'
");
if (mysqli_num_rows($get_products) > 0) {
while ($row1 = mysqli_fetch_assoc($get_products)) {
echo "Product Title: ";
$product_ref = $row1['s_c_product'];
echo $product_ref;
echo " Qty: ";
echo $row1['s_c_qty'];
$qty = $row1['s_c_qty'];
echo "<br>";
$get_subtotal = mysqli_query($conn, "
SELECT L_PRICE price
FROM listings
WHERE L_REF = '$product_ref'
");
while ($row2 = mysqli_fetch_assoc($get_subtotal)) {
$price = $row2['price'];
$subtotal = $row2['price'] * $qty;
echo "Price: ".number_format($price)." ";
echo "Subtotal: ".number_format($subtotal)."<br><br>";
}
$get_grandtotal = mysqli_query($conn, "
SELECT SUM(L_PRICE) grand_total
FROM listings
WHERE v_ref = '$sellers[$i]'
");
$grand_total += mysqli_fetch_assoc($get_grandtotal)['grand_total'];
}
echo "<h2>Grand Total for seller ".$sellers[$i]." : ".$grand_total."</h2>";
}
}
}
我的数据库中有多个表,如下图所示
尝试将上一个SQL查询更改为:
$get_grandtotal = mysqli_query($conn, "
SELECT SUM(L_PRICE) grand_total
FROM listings
WHERE v_ref = '$sellers[$i]' AND L_REF = '$product_ref'
");
设置$grand_总计=0;循环打开的右侧位置:
for ($i=0; $i < count($sellers); $i++) {
$grand_total = 0;
$get_products = ....
...
阅读我上面的评论。这个例子可能不会比现在更复杂;只需使用SUML_PRICE和GROUP BY s_c_vendor.@MartinZeitler我试过了,还有其他多种语法。它总是要么给出所有供应商的总数,要么只获取每个供应商的“最后”小计。@MartinZeitler如果不起作用,你有什么建议?总数仍在显示incorrectly@anna你没有运用这个建议并不意味着这是一个坏建议。。。SUM是一个域聚合函数,其中GROUP BY定义域获得相同结果意味着域中只有一个供应商。通过提供表名获得答案的期望可能无法实现。@MartinZeitler抱歉,我不明白这一点。我应用了这个建议,它给出了与我当前建议完全相同的结果。。。我对问题进行了编辑,将表格“细分”也包括在内。还需要澄清什么?哇,你做到了!将总计重置为0,其中您指出的是关键。我必须做一些额外的更改:我将grand_total变量更改为$grand_total+=mysqli_fetch_assoc$get_grandtotal['grand_total']*$qty;成功了!谢谢你的帮助,伙计:-