I'm trying to create a chart using the Google Visualization API, with PHP & MySQL in the background.
What I'm doing is:
- getting the data from db using PHP / SQL - $sth = mysql_query("SELECT * FROM Chart");
- creating JSON with PHP - $rows = array(); while($r = mysql_fetch_assoc($sth)) { $rows[] = $r; } $jdata = json_encode($rows);
- and then feeding Google Visualization API with JSON - var data = new google.visualization.DataTable(<?php echo $jdata ?>);
Just to make sure the JSON is actually in the correct format I did:
$jdata = json_encode($rows);
print $jdata;
which returned:
[{"id":"1","quarters":"1","salary":"1250"},{"id":"2","quarters":"2","salary":"2500"},{"id":"3","quarters":"3","salary":"4526"},{"id":"4","quarters":"4","salary":"4569"}] 
So,
- db connection is OK.
- creating JSON from PHP array is OK.
- JSON format is OK.
Firebug is returning an error saying:
Table has no columns. [Break On This Error] b,Sl),[b]}function Zq(a,b){var c=a[xc]..."].")):d(l("Table has no columns."))}
The question is how can I create columns from JSON data?
UPDATE:
Code used to create the graph below:
// SQL Query
$sth = mysql_query("SELECT * FROM Chart");
//$rows = array();
while($r = mysql_fetch_assoc($sth)) {
   if(!isset($google_JSON)){    
     $google_JSON = "{cols: [";    
     $column = array_keys($r);
     foreach($column as $key=>$value){
         $google_JSON_cols[]="{id: '".$key."', label: '".$value."'}";
     }    
     $google_JSON .= implode(",",$google_JSON_cols)."],rows: [";       
   }
   $google_JSON_rows[] = "{c:[{v: '".$r['id']."'}, {v: '".$r['quarters']."'}, {v: '".$r['salary']."'}]}";
}    
// you may need to change the above into a function that loops through rows, with $r['id'] etc, referring to the fields you want to inject..
$data = $google_JSON.implode(",",$google_JSON_rows)."]}";
Output HTML CODE:
        <!-- load Google AJAX API -->
    <script type="text/javascript" src="http://www.google.com/jsapi"></script>
    <script type="text/javascript">  
        //load the Google Visualization API and the chart  
        google.load('visualization', '1', {'packages':['columnchart']});  
        //set callback  
        google.setOnLoadCallback (createChart);  
        //callback function  
        function createChart() {  
            //create data table object  
            var data = new google.visualization.DataTable({cols: [{id: '0', label: 'id'},{id: '1', label: 'quarters'},{id: '2', label: 'salary'}],rows: [{c:[{v: '1'}, {v: '1'}, {v: '1250'}]},{c:[{v: '2'}, {v: '2'}, {v: '2500'}]},{c:[{v: '3'}, {v: '3'}, {v: '4526'}]},{c:[{v: '4'}, {v: '4'}, {v: '4569'}]}]});  
            //instantiate our chart objects  
            var chart = new google.visualization.ColumnChart (document.getElementById('chart'));  
            //define options for visualization  
            var options = {width: 400, height: 240, is3D: true, title: 'Company Earnings'};  
            //draw our chart  
            chart.draw(data, options);  
        }  
    </script>
    <div id="chart"></div>

 
     
     
     
    