2013-02-28 2 views
6

Ich habe viel gesucht und endlich meinen Google-Charts-Code laufen lassen. Hier ist mein Code, der sowohl die Datenansicht als auch die Datentabelle verwendet.Warum muss ich an PieChart.draw() eine DataView (statt nur eine DataTable) übergeben?

// Hier ist mein Code für 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: enthält Verbindungen und Abfrage

<?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; 

?> 

Was ist der Unterschied zwischen DataView Klasse und DataTable Konstruktor? Wenn ich DataView nicht verwende, wird es nicht gedruckt.

+0

Sie haben vergessen, eine Frage zu stellen –

+1

Es war nur eine Antwort. Ich habe mein Problem gelöst und es gepostet. Aber noch habe ich eine Frage hinzugefügt .. – Atihska

+0

Diese Seite ist für Fragen und Antworten. keine Tutorials. –

Antwort

0

Mit google:

Google visualization API.

Stack-Überlauf ist nicht für Tutorien, ist es für produktive Fragen. Wenn Sie Tutorials erstellen möchten, können Sie eine Website mit dem Namen The Code Player verwenden.

Verwandte Themen