从json获取每天的总和值

时间:2019-01-29 02:07:57

标签: php arrays json

这是我想要获取每个日期的NO_OF_CTN总值的代码。我使用json来获取总和值。但是我该如何区分每一天的价值,以防止它们总和。

<?php

 include '../includes/db_conn.php';
 $final_query = "SELECT DATE, NO_OF_CTN
                 FROM `material_dtl_tbl` WHERE 
                 `material_dtl_tbl`.`DATE` BETWEEN '2018-11-01%' 
                 AND '2018-11-03%' GROUP BY STOCK_CODE ORDER BY DATE ASC
                ";

$rsEventList = mysqli_query($con, $final_query) or die(mysqli_error($con));

$data_array = array();

while ($row = mysqli_fetch_assoc($rsEventList)) {
    $data_array[] = array("date" => $row['DATE'],"num" => $row['NO_OF_CTN'],);
} 

?>
<script type="text/javascript"> 
var total = 0;
var data = <?php echo json_encode($data_array)?>;

for($i = 0; $i < data.length ; $i++){
         total += parseInt(data[$i].num);
}

document.write(total);

</script>

使用这种方式,我能够获得nov 1与nov 3的总和,但我想获得nov 1,nov 2,nov 3的总价值,而不是3天的总价值。 有什么方法可以实现? 谢谢

2 个答案:

答案 0 :(得分:0)

您可以单独使用SQL来实现

$final_query = "SELECT DATE as date, sum(NO_OF_CTN) as num
                 FROM `material_dtl_tbl` WHERE 
                 `material_dtl_tbl`.`DATE` BETWEEN '2018-11-01' 
                 AND '2018-11-03' GROUP BY STOCK_CODE, DATE
                 ORDER BY DATE ASC
                ";

$rsEventList = mysqli_query($con, $final_query) or die(mysqli_error($con));

$data_array = array();

while ($row = mysqli_fetch_assoc($rsEventList)) {
    $data_array[] = $row;
} 

这将汇总用日期和STOCK_CODE分隔的NO_OF_CTN。您不必自己遍历数组,因此可以提高性能。

答案 1 :(得分:0)

由于您似乎并不在乎纸箱上的#include "source.h" Just::Just() { std::cout << "It Works!" << std::endl; } ,而只想获取每天的纸箱总数,因此应从STOCK_CODE中删除STOCK_CODE并将其替换为GROUP BY。您还需要从与以下内容进行比较的DATE中删除%

DATE

请注意,如果您的$final_query = "SELECT `DATE`, NO_OF_CTN FROM `material_dtl_tbl` WHERE `DATE` BETWEEN '2018-11-01' AND '2018-11-03' GROUP BY `DATE` ORDER BY `DATE` ASC "; 列是DATETIMESTAMP列,则应使用DATETIME将其转换为日期。