Php 在买方购物车中重置每个供应商的总计、每个供应商的汇总

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

问题是:

每件物品的价格为200.00美元,因此15件物品总共需要3000美元

这些商品来自不同的供应商,因此我需要根据买家选择的数量获得每个供应商的总数量。这是如何实现的

代码按预期工作,直到我尝试获得每个供应商的总计

<?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;成功了!谢谢你的帮助,伙计:-