从HighCHarts的数据库获取数据

时间:2014-05-23 15:46:41

标签: php highcharts

我正在开发一个工具,其中包含我正在使用的统计页面HighCharts,我正在使用基本折线图,现在填充此图表我需要一些数据。数据来自我的数据库。

我收到了一个查询,该查询提取了分配给特定' Manager'的用户列表。现在我希望每个名称显示为不同的行。

但是会发生的是所有名字都出现在一行........

我的代码:

<?php
session_start();
class ManagerStats{

    public function con()
    {
        require_once('connect.php');
        $DB = new dbConnect();
        return $DB->connect();
    }

    public function DontEvenKnow(){

        if($_SESSION['user'] == 'manager1@gmail.com'){

            $sql = "SELECT user_id, first_name FROM tbl_user WHERE user_team='bob'";
            $query = mysqli_query($this->con(), $sql);

            if($query){

                foreach($query as $v){

                    echo $v;

                }
            }

            }elseif($_SESSION['user'] == 'manager2@gmail.com'){
            //$sql = "SELECT user_id FROM tbl_user WHERE user_team='oli'";
        }
        }
}
?>
<script>
    $(function () {
        $('#home_manager').highcharts({
            title: {
                text: '',
                x: -20 //center
            },
            xAxis: {
                categories: ['04/19', '04/20', '04/21', '04/22', '04/23', '04/24']
            },
            yAxis: {
                title: {
                    text: 'Emails Sent'
                },
                plotLines: [
                    {
                        value: 0,
                        width: 1,
                        color: '#808080'
                    }
                ]
            },
            tooltip: {
                valueSuffix: ''
            },
            legend: {
                layout: 'vertical',
                align: 'right',
                verticalAlign: 'middle',
                borderWidth: 0
            },
            series: [
                {
                    name: '<?php $oko = new ManagerStats(); $oko->DontEvenKnow(); ?>',
                    data: [38, 78, 12, 80, 75]
                },
                {
                    name: 'Helena',
                    data: [23, 34, 55, 67, 34]
                },
                {
                    name: 'Martin',
                    data: [34, 35, 55, 69, 67]
                },
                {
                    name: 'Marta',
                    data: [43, 64, 75, 57, 64]
                },
                {
                    name: 'Samuel',
                    data: [63, 64, 75, 87, 44]
                },
                {
                    name: 'Carter',
                    data: [43, 54, 55, 67, 84]
                }
            ]
        });
    });
</script>

2 个答案:

答案 0 :(得分:1)

在你的功能中:

 $data = "";
 $data_for_user = "[43, 54, 55, 67, 84]"; 
           //For each user you need to get data from database,
           //but don't do a query inside a loop because it kills perfomance

 foreach($query as $v){
      $data .= " {
                   name: '".$v["first_name" ]."',
                   data: ".$data_for_user."
                }, ";
 }
  echo $data;

然后串联

series: [<?php $oko = new ManagerStats(); $oko->DontEvenKnow(); ?>]

这将在你拥有的highcharts foreach用户上做一个新行

UPDATE:错过了数组中的一个引号,如果他们只是复制它,可能就是为什么它不能为这个人工作。

更新: 为高级图表获取更多用户的数据

您需要查询用户及其所有必须在图表中的值:

 $query = "SELECT t.user_id, t.first_name, group_concat( v.values )  as data_for_user
             FROM tbl_user t,tbl_values v
            WHERE t.user_id = v.user_id 
            GROUP by t.user_id";

组concat获取用逗号分隔的用户值,以高桥图的方式。 请记住,group_concat的长度限制为1024,但您可以在查询之前使用此更改。

 'SET GLOBAL group_concat_max_len=15000'

高图的数据

 $data = "";

 foreach($query as $v){
      $data .= " {
                   name: '".$v["first_name" ]."',
                   data: [".$v["data_for_user"]."]
                }, ";
 }

答案 1 :(得分:0)

在回显变量后尝试添加换行符。像这样:

echo $v . "<br />";

这应该在每个用户之后创建一个新行。