我正在开发一个工具,其中包含我正在使用的统计页面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>
答案 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 />";
这应该在每个用户之后创建一个新行。