Php MySql内部连接未在Google图表中显示数据
我是一个完全的新手,试图把我向经理和求职者所做的调查形象化。我试图在Google图表中以折线图的形式显示结果,经理和申请人的输入在Y轴上,他们被询问的主题在X轴上。我使用了一个内部连接将他们的答案拉到一个表中,并将主题作为行,经理和申请人的答案作为列。但它不会显示结果,当我检查页面时,会出现“Undefined variable”错误Php MySql内部连接未在Google图表中显示数据,php,mysql,google-visualization,Php,Mysql,Google Visualization,我是一个完全的新手,试图把我向经理和求职者所做的调查形象化。我试图在Google图表中以折线图的形式显示结果,经理和申请人的输入在Y轴上,他们被询问的主题在X轴上。我使用了一个内部连接将他们的答案拉到一个表中,并将主题作为行,经理和申请人的答案作为列。但它不会显示结果,当我检查页面时,会出现“Undefined variable”错误 <?php include "db.php";?> <html> <head> <script
<?php include "db.php";?>
<html>
<head>
<script type="text/javascript"
src="https://www.gstatic.com/charts/loader.js"></script>
<script type="text/javascript">
google.charts.load('current', {'packages':['corechart']});
google.charts.setOnLoadCallback(drawChart);
function drawChart() {
var data = google.visualization.arrayToDataTable([
['experience', 'strengths', 'cultural_fit'],
<?php
$query="select p.output, sum(case when r.candname = 'manager'
then s.answer else 0 end) as Manager, sum(case when r.candname =
'applicant01' then s.answer else 0 end) as Applicant01 from questions p
inner join graphtable s on p.q_id = s.q_id inner join applied r on
s.candidate = r.candidate group by p.output";
$res=mysqli_query($conn,$query);
while($data= mysqli_fetch_array($res)){
$year=$data['experience'];
$sale=$data['strengths'];
$expense=$data['cultural_fit'];
?>
['<?php echo $experience;?>',<?php echo $strengths;?>,<?php
echo $cultural_fit;?>],
<?php
}
?>
]);
var options = {
title: 'Score comparison',
curveType: 'function',
legend: { position: 'bottom' }
};
var chart = new
google.visualization.LineChart(document.getElementById('curve_chart'));
chart.draw(data, options);
}
</script>
</head>
<body>
<div id="curve_chart" style="width: 900px; height: 500px"></div>
</body>
</html>
我真的很感激你能提供的任何帮助-提前谢谢!特别感谢您尽可能用最简单的语言回答 您正在旋转结果,以便每个申请者位于不同的列中。但在你的想象中,你希望每个问题都是一列。因此,查询应该是:
SELECT a.candname,
SUM(CASE WHEN q.output = 'experience' THEN g.answer END) AS experience,
SUM(CASE WHEN q.output = 'strengths' THEN g.answer END) AS strengths,
SUM(CASE WHEN q.output = 'cultural_fit' THEN g.answer END) AS cultural_fit
FROM questions AS q
JOIN graphtable AS g ON q.q_id = g.q_id
JOIN applied AS a ON a.candidate = g.candidate
GROUP BY g.candidate
然后,您需要在获取后设置正确的变量名:
while($data= mysqli_fetch_array($res)){
$candname = $data['candname']
$experience=$data['experience'];
$strengths=$data['strengths'];
$cultural_fit=$data['cultural_fit'];
echo json_encode([$candname, $experience, $strengths, $cultural_fit]) . ",";
}
您正在旋转结果,以便每个申请者位于不同的列中。但在你的想象中,你希望每个问题都是一列。因此,查询应该是:
SELECT a.candname,
SUM(CASE WHEN q.output = 'experience' THEN g.answer END) AS experience,
SUM(CASE WHEN q.output = 'strengths' THEN g.answer END) AS strengths,
SUM(CASE WHEN q.output = 'cultural_fit' THEN g.answer END) AS cultural_fit
FROM questions AS q
JOIN graphtable AS g ON q.q_id = g.q_id
JOIN applied AS a ON a.candidate = g.candidate
GROUP BY g.candidate
然后,您需要在获取后设置正确的变量名:
while($data= mysqli_fetch_array($res)){
$candname = $data['candname']
$experience=$data['experience'];
$strengths=$data['strengths'];
$cultural_fit=$data['cultural_fit'];
echo json_encode([$candname, $experience, $strengths, $cultural_fit]) . ",";
}
查询中的列是
输出
、管理者
和应用程序01
,但您获取的是经验
、优势
和文化契合度
。然后您将它们分配给名为$year
、$sale
和$expense
的变量,但会重复不同的变量。体验
、优势
和文化契合度
不是列名,它们是$data['output'的值
在不同的行上。查询中的列是输出
、管理器
和应用程序01
,但您获取的是经验
、优势
和文化契合度
。然后您将它们分配给名为$year
、$sale
和$expense
的变量,但会重复不同的变量。体验
、优势
和文化契合度
不是列名,它们是不同行上的$data['output']
的值。谢谢Barmar!因此,在进行更改时,我能够可视化图形。但是,有两个问题:1。x轴和y轴绕错了方向。2.它正在根据经验绘制文化契合度和优势的输出。关于如何解决这些问题有什么想法吗?我不熟悉您使用的可视化API。但是对于问题2,您需要添加候选名称作为每个数组中的第一个元素。谢谢Barmar!因此,在进行更改时,我能够可视化图形。但是,有两个问题:1。x轴和y轴绕错了方向。2.它正在根据经验绘制文化契合度和优势的输出。关于如何解决这些问题有什么想法吗?我不熟悉您使用的可视化API。但是对于问题2,您需要将候选名称添加为每个数组中的第一个元素。
while($data= mysqli_fetch_array($res)){
$candname = $data['candname']
$experience=$data['experience'];
$strengths=$data['strengths'];
$cultural_fit=$data['cultural_fit'];
echo json_encode([$candname, $experience, $strengths, $cultural_fit]) . ",";
}