Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/250.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php导出csv我要求和价格列_Php_Mysql_Csv - Fatal编程技术网

php导出csv我要求和价格列

php导出csv我要求和价格列,php,mysql,csv,Php,Mysql,Csv,我有一张表,上面有物品,说明,价格。 当我以csv形式导出时,我希望对价格列求和,并像小计一样放入最后一行。csv生成罚款。。我需要在价格栏加总 header('Content-Type: text/csv; charset=utf-8'); header('Content-Disposition: attachment; filename=' . $type . '-' . date('Y-m-d') . '.csv'); $output = fopen('php://

我有一张表,上面有物品,说明,价格。 当我以csv形式导出时,我希望对价格列求和,并像小计一样放入最后一行。csv生成罚款。。我需要在价格栏加总

    header('Content-Type: text/csv; charset=utf-8');
    header('Content-Disposition: attachment; filename=' . $type . '-' . date('Y-m-d') . '.csv');
    $output = fopen('php://output', 'w');


     foreach ($price_list as $car) {
        $i++;
        $rows[$i][id] = $car->id;
        $text = $car->item;
        $rows[$i][des]=$car->des;
        $rows[$i][text] = preg_replace('/\s+/S', " ", $text);
        $rows[$i][price]=$car->price;
        $rows[$i][stocks]=$car->stocks;

        $rows[$i][edited_dt] = $car->edited_dt;


    }




    foreach ($rows as $row) {
        fputcsv($output, $row);
    }
//质疑
选择id、采购类型、项目、des、价格、价格单位、库存、库存单位、创建单位、创建单位、编辑单位 从价格列表中,状态=1

按id desc下单

设置一个
$total=0变量。在循环内,添加
$total+=$car->price。然后在循环后添加最后一行。

在循环中添加sum,然后在包含sum行的循环外部添加新列

$price_sum = 0;
foreach ($price_list as $car) {
        $i++;
        $rows[$i][id] = $car->id;
        $text = $car->item;
        $rows[$i][des]=$car->des;
        $rows[$i][text] = preg_replace('/\s+/S', " ", $text);
        $rows[$i][price]=$car->price;
        $price_sum += $car->price;; //sum  price here
        $rows[$i][stocks]=$car->stocks;

        $rows[$i][edited_dt] = $car->edited_dt;


    }
  $i++;
       $rows[$i][id] = "";
        $rows[$i][des]="";
        $rows[$i][text] ="";
        $rows[$i][price]=$price_sum; //add sum here
        $rows[$i][stocks]="";
        $rows[$i][edited_dt] ="";




    foreach ($rows as $row) {
        fputcsv($output, $row);
    }

假设您不想直接在PHP代码中进行任何聚合,那么您的问题实际上有一个纯MySQL解决方案。考虑下面的查询:

SELECT
    id, p_type, item, des, price, price_unit, stocks, stocks_unit, creat‌​ed_dt,
    created_by, edi‌​ted_dt,
    SUM(price) AS total_price
FROM price_list
WHERE state = 1
GROUP BY
    id, p_type, item, des, price, price_unit, stocks, stocks_unit, creat‌​ed_dt,
    created_by, edi‌​ted_dt
WITH ROLLUP
HAVING
    (p_type IS NOT NULL AND item       IS NOT NULL AND des IS NOT NULL AND
     price  IS NOT NULL AND price_unit IS NOT NULL AND stocks IS NOT NULL AND
     stocks_unit IS NULL AND created_dt IS NULL AND created_by IS NOT NULL AND
     edited_dt IS NOT NULL) OR
     id IS NULL;
只需迭代此结果集,当您点击最后一条记录时,只需访问
total_price
列,该列将是价格的总和。除此记录是结果集中的最后一条记录外,此记录的标记是除
total\u price
之外的任何列都是
null

下面是一个简化演示的链接,演示了此汇总技巧在整个表格上的工作原理:


从价格列表中选择id、p\u类型、项目、des、价格、价格单位、股票、股票单位、创建人、编辑人,其中state=1 order by id descI在下面提供了一个选项,该选项使用汇总计算MySQL内的总价格。