2013-02-28 3 views
6

Tôi đã tìm kiếm rất nhiều và cuối cùng có thể chạy mã biểu đồ google của mình. Đây là mã của tôi khi sử dụng cả chế độ xem dữ liệu và bảng dữ liệu.Tại sao tôi cần chuyển một DataView (thay vì chỉ một DataTable) sang PieChart.draw()?

// Đây là mã của tôi cho chartDraw.php

<html> 
<head> 
<!--Load the AJAX API --> 
<script type="text/javascript" src="https://www.google.com/jsapi"></script> 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js" type="text/javascript"></script> 

<script type="text/javascript"> 

function drawChart(){ 
    var jsonData = $.ajax({ 
     url:"getdata.php", 
     dataType:"json", 
     async:false 
     }).responseText; 

//This is used when you hard code your values: static data. Here I am taking data from database so commented it. 
/*var jsonData='{"cols":[{"label":"User ID","type":"string"},{"label":"Group Name","type":"string"},{"label":"Requested Nodes","type":"number"},{"label":"Actual PE","type":"number"}],"rows":[{"c":[{"v":"user 1"},{"v":"ufhpc"},{"v":1},{"v":5.000}]},{"c":[{"v":"user2"},{"v":"ufhpc"},{"v":1},{"v":7.000}]}]}'; 
*/ 
//Create our data table out of JSON data loaded from server 
var data=new google.visualization.DataTable(jsonData); 

//PieCharts expects 2 columns of data: a label and a value, so we need to use a DataView to restrict to 2 columns 
var view=new google.visualization.DataView(data); 
view.setColumns([0,3]); 

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

//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); 
</script> 
</head> 

<body> 
     <!--Div that will hold the pie chart --> 
     <div id="chart_div"></div> 
</body> 
</html> 

//getdata.php: chứa các kết nối và truy vấn

<?php 

mysql_connect('localhost','user','password'); 
mysql_select_db('dbname'); 

$sqlquery1="select userid,group_name,req_nodes,actualPE from jobs where userid='zhang' limit 200"; 

$sqlresult1=mysql_query($sqlquery1); 

$table=array(); 
$table['cols']=array(
     array('label'=> 'User ID', type=>'string'), 
     array('label'=>'Group Name', type=>'string'), 
     array('label'=>'Requested Nodes', type=>'number'), 
     array('label'=>'Actual PE', type=>'number') 
); 
$rows=array(); 

while($r=mysql_fetch_assoc($sqlresult1)){ 
     $temp=array(); 
     $temp[]=array('v' => $r['userid']); 
     $temp[]=array('v' => $r['group_name']); 
     $temp[]=array('v' =>(int) $r['req_nodes']); 
     $temp[]=array('v' =>(float) $r['actualPE']); 

     $rows[]=array('c' => $temp); 
} 

$table['rows']=$rows; 

$jsonTable = json_encode($table); 
//this print statement just for testing 
print $jsonTable; 

?> 

sự khác biệt giữa DataView lớp và DataTable constructor là gì? Nếu tôi không sử dụng DataView, nó không in.

+0

Bạn quên đặt câu hỏi –

+1

Đó chỉ là câu trả lời. Tôi giải quyết vấn đề của tôi để đăng nó. Nhưng tôi vẫn còn thêm một câu hỏi .. – Atihska

+0

Trang web này dành cho các câu hỏi và sau đó là câu trả lời. không phải hướng dẫn. –

Trả lời

0

Sử dụng google:

Google visualization API.

stack overflow không phải dành cho hướng dẫn, nó là dành cho câu hỏi hiệu quả. Nếu bạn muốn tạo hướng dẫn, bạn có thể muốn sử dụng trang web có tên là The Code Player.