Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/234.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
Javascript 使用PHP在一周后重置HightChart_Javascript_Php_Mysql_Highcharts - Fatal编程技术网

Javascript 使用PHP在一周后重置HightChart

Javascript 使用PHP在一周后重置HightChart,javascript,php,mysql,highcharts,Javascript,Php,Mysql,Highcharts,我在我的web应用程序上使用HighCharts,作为视觉参考。我从数据库中提取数据,让每个用户画一条线 我遇到的问题是,每天都会添加新的点,并且在2-3周之后,会有太多的点映射到图上,这会影响web应用程序的性能 我希望有人能帮助我如何在一周后重置图表,或者从图表中删除最旧的点并添加新点。如果可能的话,因为我已经花了很多时间尝试提出解决方案,但没有运气,图表只是在不断增长 打印屏幕: 请注意,图表如何超出预定义的天数 我的PHP和Mysql$JavaScript代码: <scr

我在我的web应用程序上使用HighCharts,作为视觉参考。我从数据库中提取数据,让每个用户画一条线

我遇到的问题是,每天都会添加新的点,并且在2-3周之后,会有太多的点映射到图上,这会影响web应用程序的性能

我希望有人能帮助我如何在一周后重置图表,或者从图表中删除最旧的点并添加新点。如果可能的话,因为我已经花了很多时间尝试提出解决方案,但没有运气,图表只是在不断增长

打印屏幕:

请注意,图表如何超出预定义的天数

我的PHP和Mysql$JavaScript代码:

    <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将仅返回范围内的日期。表的结构将决定使用哪一个。看这把小提琴:我需要做的是描述所有的分组结果并限制它们