如何创建一个过滤器以显示7天内的MariaDB数据?

时间:2019-05-07 09:31:49

标签: javascript php sql chart.js

我正在使用chart.js来显示通过查询推送到php的数据的统计信息。我想创建一个php / sql过滤器,从最近7天开始每周显示数据。我正在使用mysql(MariaDB)。

在这种情况下,我的销售人员具有唯一的ID,并且每个销售的记录都存储在数据库中,包括:销售ID,销售日期,已售商品的数量以及与销售相关的销售人员的ID 。
我使用SQL查询来设置一个过滤器,该过滤器显示最近7天内每个销售人员售出的商品数量。

这是我的php代码:

$spID = ''; //this will hold asalesperson ID
$spStats=''; //this will hold a total number of items sold by the specific salesperson in the range of 7 days

//get performance of the salesperson
$get_perf = "SELECT cast(sDate AS date) As date, spID, SUM(itemsSaled) AS spStats               
    FROM sales
    WHERE sDate >= DATE_ADD(NOW(), INTERVAL -7 DAY) AND sDate <=NOW()
    GROUP BY
    date, spID";

$agent_perf = mysqli_query($db_conn, $get_perf);    


while ($row = mysqli_fetch_array($agent_perf)) {
        $spID = $spID. '"'. $row['spID'].'",'; //label
        $spStats = $spStats. '"'. $row['spStats'].'",'; //dataset
    }

$spStats= trim($spStats, ",");

这是我的js脚本,用于将上面的内容表示为饼图

var ctx = document.getElementById("chart4").getContext('2d');
                var myChart4 = new Chart(ctx, {
                type: 'pie',
                data: {
                datasets: [{
                    label: 'date', //this is not being displayed
                    data: [<?php echo $spStats; ?>],
                    backgroundColor: pointBackgroundColors //takes colours from function
                }],
                //labels: [<?php echo $agent_id; ?>]
                labels: [<?php echo $spID; ?>]
                },
                options: {
                    scales: {scales:{yAxes: [{beginAtZero: false}], xAxes: [{autoskip: true, maxTicketsLimit: 20}]}},
                    tooltips:{mode: 'index'},
                    legend:{display: true, position: 'top', labels: {fontColor: 'black', fontSize: 16}}
                }
            });

现在,我的图形显示了过去7天所需的数据。我想有一个下拉列表,它将与我的PHP相关联,因此我可以向下滚动到所需的数据范围(总是7天),但是我不知道如何选择7天范围是自动的,而不需要在查询中分配日期。 (这将如何更改我的js代码?)

0 个答案:

没有答案