Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/261.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
Php MySql内部连接未在Google图表中显示数据_Php_Mysql_Google Visualization - Fatal编程技术网

Php MySql内部连接未在Google图表中显示数据

Php MySql内部连接未在Google图表中显示数据,php,mysql,google-visualization,Php,Mysql,Google Visualization,我是一个完全的新手,试图把我向经理和求职者所做的调查形象化。我试图在Google图表中以折线图的形式显示结果,经理和申请人的输入在Y轴上,他们被询问的主题在X轴上。我使用了一个内部连接将他们的答案拉到一个表中,并将主题作为行,经理和申请人的答案作为列。但它不会显示结果,当我检查页面时,会出现“Undefined variable”错误 <?php include "db.php";?> <html> <head> <script

我是一个完全的新手,试图把我向经理和求职者所做的调查形象化。我试图在Google图表中以折线图的形式显示结果,经理和申请人的输入在Y轴上,他们被询问的主题在X轴上。我使用了一个内部连接将他们的答案拉到一个表中,并将主题作为行,经理和申请人的答案作为列。但它不会显示结果,当我检查页面时,会出现“Undefined variable”错误

      <?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>
  • 问题
  • graphtable(是的,我知道我在命名东西方面很糟糕——工作到凌晨都没用)

  • 我真的很感激你能提供的任何帮助-提前谢谢!特别感谢您尽可能用最简单的语言回答

    您正在旋转结果,以便每个申请者位于不同的列中。但在你的想象中,你希望每个问题都是一列。因此,查询应该是:

    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]) . ",";
                }