Hi - I am stuck on passing data from php to google charts using the 
google.visualization.dashboard classes .  My code works fine end-to-end for 
calling charts directly, but not when I use the dashboard classes.  I am 
near positive that there is something wrong with my JSON data, but I cannot 
figure it out and again it works with calling the charts directly.    

Here's the array that is return from variable $jsonTable:
{"cols":[{"label":"NZ 
Crime","type":"string"},{"label":"Value","type":"number"}],"rows":[{"c":[{"v":" 
Acts intended to cause injury"},{"v":"97"}]},{"c":[{"v":" Sexual assault 
and related offences"},{"v":"44515"}]},{"c":[{"v":" Dangerous or negligent 
acts endangering persons"},{"v":"3016"}]},{"c":[{"v":" Abduction, 
harassment and other related offences against a 
person"},{"v":"859"}]},{"c":[{"v":" Robbery, extortion and related 
offences"},{"v":"14157"}]},{"c":[{"v":" Unlawful entry with 
intent\/burglary, break and enter"},{"v":"2641"}]},{"c":[{"v":" Theft and 
related offences"},{"v":"59323"}]},{"c":[{"v":" Fraud, deception and 
related offences"},{"v":"136932"}]},{"c":[{"v":" Illicit drug 
offences"},{"v":"9726"}]},{"c":[{"v":" Prohibited and regulated weapons and 
explosives offences"},{"v":"22994"}]},{"c":[{"v":" Property damage and 
environmental pollution"},{"v":"7074"}]},{"c":[{"v":" Public order 
offences"},{"v":"58483"}]},{"c":[{"v":" Offences against justice 
procedures, government security and government 
operations"},{"v":"46105"}]},{"c":[{"v":" Miscellaneous 
offences"},{"v":"19084"}]}]}

 
PHP code "loadpiechart.php":
<?php
require_once 'global.inc.php';
require_once 'classes/DB.class.php';

//create connection to the database
$connect = mysqli_connect('localhost', 'uname', 'pword', 'db');
if (mysqli_connect_errno($connect))
{
    echo "Failed to connect to MySQL: " . mysqli_connect_error();
}


//get the $year breakout variable
$year = $_SESSION['Yearbreakout'];


$res = mysqli_query($connect, "SELECT * FROM `nzcrime2` WHERE Year = 
$year");

$table['cols'] = array(
    
    // Labels for your chart, these represent the column titles
    // id is optional
    //
    
    array('label' => 'NZ Crime', 'type' => 'string'),
    array('label' => 'Value', 'type' => 'number'),
);

$rows=array();
while($r=mysqli_fetch_assoc($res)){
    $temp=array();
    
    $temp[]=array('v'=> $r['Offence']);
    $temp[]=array('v' => $r['Total']);
 

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

$jsonTable = json_encode($table);
echo $jsonTable;
?>

And lastly the HTML code:
<html>
  <head>     
    <!--Load the AJAX API-->
    <script type="text/javascript" 
src="https://www.gstatic.com/charts/loader.js";></script>
    <script type="text/javascript">
    
    // Load the Visualization API and the piechart package.
      google.charts.load('current', {packages:['corechart', 'table', 
'controls']});
      
    // Set a callback to run when the Google Visualization API is loaded.
    google.setOnLoadCallback(drawTable);
      
    function drawTable() {
    var jsonData = $.ajax({
             url: "loadpiechart.php",
             dataType:"json",
             async: false
             }).responseText;
             
         // Create our data table out of JSON data loaded from server.
         var data = new google.visualization.DataTable(jsonData);
  
      var table = new google.visualization.ChartWrapper({
      'chartType': 'Table',  
      'containerId': 'table_div',
      });

      var chart = new google.visualization.ChartWrapper({
    'chartType': 'PieChart',  
      'containerId': 'chart_div',
      'view': {'columns': [0, 1]},
      
     });


      var control = new google.visualization.ControlWrapper({
        'controlType': 'CategoryFilter',
        'containerId': 'control_div',
        'options': {
            'filterColumnIndex': 0,
        }
      });

      var dashboard = new google.visualization.Dashboard(
            document.getElementById('dashboard_div'));
      dashboard.bind([control], [table,chart]);
      dashboard.draw(data);
    }
    </script>
  </head>
 <body>
<div id="dashboard_div" style="border: 1px solid #ccc; margin-top: 1em">
  <p style="padding-left: 1em"><strong>Donuts eaten per person</strong></p>
  <table class="columns">
    <tr>
      <td>
        <div id="control_div" style="padding-left: 15px"></div>
      </td>
    </tr><tr>
      <td>
        <div id="chart_div" style="padding-top: 15px"></div>
      </td><td>
        <div id="table_div" style="padding-top: 30px"></div>
      </td>
    </tr>
  </table>
</div> 
  </body>
</html>

-- 
You received this message because you are subscribed to the Google Groups 
"Google Visualization API" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/google-visualization-api/6ba35e19-897d-4117-9500-21f725112531o%40googlegroups.com.

Reply via email to