我正在使用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代码?)