2014-03-06 4 views
0

나는 사용자를 위해 대시 보드에 piechart를 만들었습니다.MYSQL 데이터베이스의 데이터를 사용하여 Google piechart을 그리는 데 어려움이 있습니다.

<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 jsonData = $.ajax({ 
     url: "getData.php", 
     dataType:"json", 
     async: false 
     }).responseText; 

    // Create our data table out of JSON data loaded from server. 
    var data = new google.visualization.DataTable(jsonData); 

    // Instantiate and draw our chart, passing in some options. 
    var chart = new google.visualization.PieChart(document.getElementById('piechart')); 
    chart.draw(data, {width: 400, height: 240}); 
} 


</script> 

getData.php

$sent = mysqli_query($con,"SELECT name FROM table_name WHERE user_id='$user_id'"); 
$num_rows_sent = mysqli_num_rows($sent); 


$viewed = mysqli_query($con,"SELECT viewed FROM table_name WHERE user_id='$user_id' AND viewed= 1 "); 
$num_rows_viewed= mysqli_num_rows($viewed); 


$accepted = mysqli_query($con,"SELECT accepted FROM table_name WHERE user_id='$user_id' AND accepted= 1 "); 
$num_rows_accepted= mysqli_num_rows($accepted); 


$declined = mysqli_query($con,"SELECT declined FROM table_name WHERE user_id='$user_id' AND declined= 1 "); 
$num_rows_declined= mysqli_num_rows($declined); 


$suggest = mysqli_query($con,"SELECT In_Discussion FROM table_name WHERE user_id='$user_id' AND In_Discussion= 1 "); 
$num_rows_suggest= mysqli_num_rows($suggest); 

$results = array(
"cols" => array(


    array("label" => "sent", "type" => "string"), 
    array("label" => "viewed", "type" => "number"), 
    array("label" => "accepted", "type" => "number"), 
    array("label" => "declined", "type" => "number"), 
    array("label" => "In_Discussion", "type" => "number"), 
), 
"rows" => array() 
); 

$results["rows"][] = array("c" => array(

    array("v" => $num_rows_sent,"f"=>"sent"), 
    array("v" => $num_rows_viewed,"f"=>"viewed"), 
    array("v" => $num_rows_accepted,"f"=>"accepted"), 
    array("v" => $num_rows_declined,"f"=>"declined"), 
    array("v" => $num_rows_suggest,"f"=>"In Discussion"), 
)); 

$json = json_encode($results,JSON_NUMERIC_CHECK); 
echo $json; 

내가 창피처럼 JSON을 얻고있다 : 나는 다음 코드를 시도

{ 
    "cols":[ 
      {"label":"sent","type":"string"}, 
      {"label":"viewed","type":"number"}, 
      {"label":"accepted","type":"number"}, 
      {"label":"declined","type":"number"},{"label":"In_Discussion","type":"number"} 
      ], 

    "rows":[ 
      { "c": 
       [ 
        {"v":4,"f":"sent"},{"v":4,"f":"viewed"},{"v":1,"f":"accepted"},{"v":0,"f":"declined"},{"v":2,"f":"In Discussion"} 

       ] 
      } 
     ] 
} 

I am getting this chart as output

Desired Chart

위의 데이터를 사용하여 원하는 차트를 어떻게 출력 할 수 있습니까?

답변

2

Google 시각화 DataTables은 실제로 2 차원 배열입니다. 따라서

activity | count 
-------------------------- 
sent  | 4 
viewed  | 4 
accepted | 1 
declined | 0 
... etc 

json으로 다음과 같이한다 PHP 스크립트에 의해 제공 : PHP 스크립트에 따라서

var jsonData = { 
    "cols":[ 
     {"label":"activity","type":"string"}, 
     {"label":"count","type":"number"} 
    ], 
    "rows":[ 
     { "c": [ {"v":'sent' },{"v" : 4 }]}, 
     { "c": [ {"v":'viewed' },{"v" : 4 }]}, 
     { "c": [ {"v":'accepted' },{"v" : 1 }]}, 
     { "c": [ {"v":'declined' },{"v" : 0 }]}, 
     { "c": [ {"v":'In Discussion' },{"v" : 2 }]}  
    ] 
} 

,이 같은 JSON을 만들 당신이 필요로하는 것은이 같은 단지 배열 구조입니다 :

$cols = array(
    array('label' => 'activity', 'type' => 'string'), 
    array('label' => 'count', 'type' => 'number') 
); 

$rows = array(); 
$rows[] = array('c' => array(array('v' => 'sent'), array('v' => $num_rows_sent))); 
$rows[] = array('c' => array(array('v' => 'viewed'), array('v' => $num_rows_viewed))); 
$rows[] = array('c' => array(array('v' => 'accepted'), array('v' => $num_rows_accepted))); 
$rows[] = array('c' => array(array('v' => 'declined'), array('v' => $num_rows_declined))); 
$rows[] = array('c' => array(array('v' => 'In Discussion'), array('v' => $num_rows_suggest))); 

$results = array(
    'cols' => $cols, 
    'rows' => $rows 
); 

echo json_encode($results); 

그리고 차트는 다음과 같이됩니다 ->http://jsfiddle.net/JP4ZJ/

관련 문제