Javascript 使用PHP在一周后重置HightChart
我在我的web应用程序上使用HighCharts,作为视觉参考。我从数据库中提取数据,让每个用户画一条线 我遇到的问题是,每天都会添加新的点,并且在2-3周之后,会有太多的点映射到图上,这会影响web应用程序的性能 我希望有人能帮助我如何在一周后重置图表,或者从图表中删除最旧的点并添加新点。如果可能的话,因为我已经花了很多时间尝试提出解决方案,但没有运气,图表只是在不断增长 打印屏幕: 请注意,图表如何超出预定义的天数 我的PHP和Mysql$JavaScript代码:Javascript 使用PHP在一周后重置HightChart,javascript,php,mysql,highcharts,Javascript,Php,Mysql,Highcharts,我在我的web应用程序上使用HighCharts,作为视觉参考。我从数据库中提取数据,让每个用户画一条线 我遇到的问题是,每天都会添加新的点,并且在2-3周之后,会有太多的点映射到图上,这会影响web应用程序的性能 我希望有人能帮助我如何在一周后重置图表,或者从图表中删除最旧的点并添加新点。如果可能的话,因为我已经花了很多时间尝试提出解决方案,但没有运气,图表只是在不断增长 打印屏幕: 请注意,图表如何超出预定义的天数 我的PHP和Mysql$JavaScript代码: <scr
<script>
$(function () {
$('#home_manager').highcharts({
title: {
text: '',
x: -20 //center
},
xAxis: {
categories: ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']
},
yAxis: {
title: {
text: 'Emails Sent'
},
plotLines: [
{
value: 0,
width: 1,
color: '#808080'
}
]
},
tooltip: {
valueSuffix: ''
},
legend: {
layout: 'vertical',
align: 'right',
verticalAlign: 'middle',
borderWidth: 0
},
<?php
class ManagerStats{
public function con()
{
require_once('connect.php');
$DB = new dbConnect();
return $DB->connect();
}
public function teamChart(){
$sql2 = "SELECT tbl_user.user_id, tbl_user.first_name, group_concat( tbl_statistics.sta_count ) AS data_for_user
FROM tbl_user,tbl_statistics
WHERE tbl_user.user_id = tbl_statistics.user_id
GROUP BY tbl_user.user_id";
$query = mysqli_query($this->con(), $sql2);
if($query){
$data = "";
$data .="series: [";
foreach($query as $v){
$data .= "{
name: '".$v['first_name']."',
data: [".$v['data_for_user']."]
},";
}
$data .="]";
echo $data;
}
}
}
$team = new ManagerStats(); $team->teamChart();
?>
});
});
</script>
为什么不限制SQL查询上的数据 比如:
$sql2 = "SELECT tbl_user.user_id, tbl_user.first_name, group_concat( tbl_statistics.sta_count ) AS data_for_user
FROM tbl_user,tbl_statistics
WHERE tbl_user.user_id = tbl_statistics.user_id
GROUP BY tbl_user.user_id
ORDER BY sat_date DESC LIMIT 7";
或者datediff来限制它?在过去的7天里,类似这样的事情:
$sql2 = "SELECT tbl_user.user_id, tbl_user.first_name, group_concat( tbl_statistics.sta_count ) AS data_for_user
FROM tbl_user,tbl_statistics
WHERE tbl_user.user_id = tbl_statistics.user_id
AND Datediff(now(), sat_date) <= 7
GROUP BY tbl_user.user_id";
是否有一个timestamp或datetime列允许您知道何时将一行添加到表tbl_statistics?是的,它被称为:sat_date将SQL查询中的结果限制为仅当前周的数据集。如果需要的话,我还建议添加一些方法来查看历史每周数据。您的数据是字符串而不是数组。如果只添加括号,并不意味着它是数组,所以将数据准备为数组,然后使用返回json并清理代码。安装了混合javascript与类定义和对象定义。嗨,我真的很喜欢第一个建议的解决方案…看起来很整洁。。但是,当我将这一行添加到我的SQL中时,没有任何效果可见,所有内容都保持不变。发生了什么?第一个建议查询中的限制不会限制每个用户的位数,而是限制用户本身的位数,如果我像限制1一样发布该行,并且只显示了一个名称……限制将限制返回X行,因此是的,如果限制为1,则返回1行。Datediff将仅返回范围内的日期。表的结构将决定使用哪一个。看这把小提琴:我需要做的是描述所有的分组结果并限制它们