2015-01-14 2 views
0

일부 도움이 필요합니다. Google 차트 API를 사용하고 있지만 POST를 사용하여 일부 매개 변수를 가져 오려고 시도 할 때 차트를 그릴 수 없습니다.

작업을 수행하기 위해 코드를 어떻게 향상시킬 수 있습니까? 사전에

감사

SQL 쿼리 :

SELECT answers,COUNT(*) as count FROM surveys 
where company_area ='human resources' and date >= '2014-11-01' and 
date <= '2014-12-31'GROUP BY answers ORDER BY count DESC 

에 phpMyAdmin의 결과가 이후의 쿼리를 실행합니다.

Answers count(*) 
YES   23 
NO   1 

JSON 출력.

{"cols": 
     [ {"label":"Answers", 
      "type":"string"},{"label":"Answers","type":"number"}], 
"rows":[ 
     {"c":[{"v":"YES"},{"v":23}]}, 
     {"c":[{"v":"NO"},{"v":1}] 
     }]} 

get_json.php

<?php 

$con = mysql_connect('localhost', 'root', '') or die('Error connecting to server'); 

mysql_select_db('sistema_encuestas', $con); 



$q = $_GET['q']; 
$a = $_GET['a']; 


// write your SQL query here (you may use parameters from $_GET or $_POST if you need them) 
$query = mysql_query("SELECT areas_evaluacion.nombre_area, AVG(encuestas.respuestas) AS Promedio 
FROM encuestas 
INNER JOIN areas_evaluacion on areas_evaluacion.id = encuestas.id_area_evaluacion 
WHERE encuestas.fechaentrevista>='".$q."' and encuestas.fechaentrevista<='".$a."' 
Group by encuestas.id_area_evaluacion 


"); 


$table = array(); 
$table['cols'] = array(

    array('label' => 'respuestas', 'type' => 'string'), 

    array('label' => 'Respuestas', 'type' => 'number') 
); 

$rows = array(); 
while($r = mysql_fetch_assoc($query)) { 
    $temp = array(); 
    // each column needs to have data inserted via the $temp array 
    $temp[] = array('v' => $r['nombre_area']); 
    //$temp[] = array('v' => (int)$r['id_area_evaluacion']); 
    $temp[] = array('v' => (float)$r['Promedio']); // typecast all numbers to the appropriate type (int or float) as needed - otherwise they are input as strings 

    // insert the temp array into $rows 
    $rows[] = array('c' => $temp); 
} 

// populate the table with rows of data 
$table['rows'] = $rows; 

// encode the table as JSON 
$jsonTable = json_encode($table); 

// set up header; first two prevent IE from caching queries 
header('Cache-Control: no-cache, must-revalidate'); 
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); 
header('Content-type: application/json'); 

// return the JSON data 
echo $jsonTable; 
?> 

chart.php I은 추가하여 고정

<script type="text/javascript" src="https://www.google.com/jsapi"></script> 
     <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script> 
    <script type="text/javascript"> 


     // Load the Visualization API and the piechart package. 
      google.load('visualization', '1', {'packages':['corechart']}); 

      // Set a callback to run when the Google Visualization API is loaded. 
      google.setOnLoadCallback(drawChart); 

      function drawChart(num,num2) { 
       var json = $.ajax({ 
        url: 'get_json_areas_por_dia.php', // make this url point to the data file 
        dataType: 'json', 
        data: "q="+num ,"a="+num2, 
        async: false 

       }).responseText; 

       // Create our data table out of JSON data loaded from server. 
       var data = new google.visualization.DataTable(json); 
       var options = { 
        title: 'Estadísticas por Áreas Por dia', 
        is3D: 'true', 
        width: 800, 
        height: 600 
       }; 
       // Instantiate and draw our chart, passing in some options. 
       //do not forget to check ur div ID 
       var chart = new google.visualization.PieChart(document.getElementById('chart_div')); 
       chart.draw(data, options); 


      } 
     </script> 

    </head> 
    <body> 


     <form> 
     <input type="date" name="date1" onchange="drawChart(this.value)"> 
     <input type="date" name="date2" onchange="drawChart(this.value)"> 
    <select name="users" onchange="drawChart(this.value)"> 

    </form> 

     <div id="chart_div"></div> 
    </body> 
</html> 
+0

그것은 우리가 당신이 관련 섹션에 게시 된 코드를 제한하는 경우가 더 나은 질문에 대답 도움이 될 것이다. 또한 자바 스크립트 오류가 발생하고 있습니까? 아니면 단순히 차트를 만들지 않은 것입니까? – BlargleMonster

+0

단순히 차트를 작성하는 것을 무시하고 있습니다. 빈 페이지가 표시됩니다. – user4276422

+0

매 간격으로 10 초마다 전화를 걸기보다 큰 간격으로 시도 했습니까 – talsibony

답변

0

상기 JSON URL에 '누락

PHP

echo ' {"cols": 
     [ {"label":"Answers", 
      "type":"string"},{"label":"Answers","type":"number"}], 
"rows":[ 
     {"c":[{"v":"YES"},{"v":23}]}, 
     {"c":[{"v":"NO"},{"v":1}] 
     }]}'; 

HTML

<!DOCTYPE HTML> 
<html> 
    <head>  
    <meta http-equiv="content-type" content="text/html; charset=utf-8"> 
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js" type="text/javascript"></script> 
    <title></title> 
    </head> 
    <body> 
    <script type="text/javascript" src="https://www.google.com/jsapi"></script> 
     <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script> 
     <script type="text/javascript"> 
      // Load the Visualization API and the piechart package. 
      google.load('visualization', '1', {'packages':['corechart']}); 

      // Set a callback to run when the Google Visualization API is loaded. 
      google.setOnLoadCallback(drawChart); 

      function drawChart() { 
       var json = $.ajax({ 
        url: 'get_json.php', // make this url point to the data file 
        dataType: 'json', 
        async: false, 
        type: 'GET' 
       }).responseText; 

       // Create our data table out of JSON data loaded from server. 
       var data = new google.visualization.DataTable(json); 
       var options = { 
        title: 'My Weekly Plan', 
        is3D: 'true', 
        width: 800, 
        height: 600 
       }; 
       // Instantiate and draw our chart, passing in some options. 
       //do not forget to check ur div ID 
       var chart = new google.visualization.PieChart(document.getElementById('chart_div')); 
       chart.draw(data, options); 

       setInterval(drawChart, 500); 
      } 
     </script> 
     <div id="chart_div"></div> 
    </body> 
</html> 
+0

예 json 출력을 추가하면 차트를 만들었지 만 데이터베이스에서 데이터를 가져 와서 $ GET 및 $ POST 값을 사용하여 차트를 사용자에게 표시하려고합니다. 차트를 그리기 위해 $ POST를 index.html로 직접 보낼 수 있습니까? – user4276422

+0

PHP 페이지로 직접 간다면 무엇이 보입니까? – talsibony

+0

예 json 출력을 추가하면 차트가 표시되지만 데이터베이스에서 데이터를 가져 와서 $ GET 및 $ POST 값을 사용하여 차트를 사용자에게 표시하려고합니다. 차트를 그리기 위해 $ POST를 index.html로 직접 보낼 수 있습니까? – user4276422