谷歌图表json问题


Google chart json issue

帮助我解决这个问题,

$sql=mysql_query("select t1.LOGIN,t1.BALANCE,t2.PROFIT from table2 t2 LEFT JOIN table1 t1 on t2.CLOSE_TIME = '1985-11-01 00:00:00' where (t2.CMD=4 or t2.CMD=6 ) AND t2.LOGIN=t1.LOGIN  ") or die(mysql_query());
$table = array();
$table['cols'] = array(
    array('label' => 'No Acc', 'type' => 'string'),
    array('label' => 'Profit', 'type' => 'number'),
    array('label' => 'Loss', 'type' => 'number')
);
$p=0;
$l=0;
$profit=0;
$loss=0;
$rows = array();
while($r=mysql_fetch_array($sql))
{
        if($r[PROFIT]>0)
        {
        $p=$p+1;
        $profit=$profit+$r[PROFIT];
        }
        else if($r[PROFIT]<=0)
        {
        $l=$l+1;
        $loss=$loss+$r[PROFIT];
        }
}
    $noacc=$p+$l;
    $temp = array();
    $temp[] = array('v' => (int) $noacc);
    $temp[] = array('v' => (int) $p);
     $temp[] = array('v' => (int) $l);
    $table['rows'] = $rows;
$jsonTable = json_encode($table);
echo $jsonTable;

我得到以下类型的json代码

{"cols":[{"label":"No Acc","type":"string"},{"label":"Profit","type":"number"},{"label":"Loss","type":"number"}],"rows":[{"c":[{"v":1199},{"v":261},{"v":938}]}]}

我使用以下谷歌图表代码

<script type="text/javascript" src="https://www.google.com/jsapi"></script>
<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<script type="text/javascript">
google.load("visualization", "1", {packages:["corechart"]});
google.setOnLoadCallback(drawChart);
function drawChart() 
{
    var jsonData = $.ajax({
        url: "cjson.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 options = {'title':'Ticket Sales',
'width':500,
'height':400};
// Instantiate and draw our chart, passing in some options.
 var chart = new google.visualization.PieChart(document.getElementById('chart_div'));
      chart.draw(data, options); 
}
</script>
<?
//  PrintHeader($buf,$username,$userid,$session);
  echo("<div id='chart_div'></div>");
?>
</html>

最后,当我在浏览器中加载页面时,只在图表中显示值1199,任何示例都会有所帮助!非常感谢。

为什么data需要如此复杂的结构。您可以从PHP脚本返回以下json:

data = [
    ['label','value'],
    ['No Acc',1199],
    ['Profit',261],
    ['Loss',938]
];

您的问题是饼图需要两列数据:饼图标签和饼图值。您需要更改PHP以返回适当的结构:

$sql = mysql_query("select t1.LOGIN,t1.BALANCE,t2.PROFIT from table2 t2 LEFT JOIN table1 t1 on t2.CLOSE_TIME = '1985-11-01 00:00:00' where (t2.CMD=4 or t2.CMD=6 ) AND t2.LOGIN=t1.LOGIN  ") or die(mysql_query());
$table = array();
$table['cols'] = array(
    array('label' => 'Category', 'type' => 'string'),
    array('label' => 'Value', 'type' => 'number')
);
$p = 0;
$l = 0;
$profit = 0;
$loss = 0;
while ($r = mysql_fetch_array($sql)) {
    if ($r[PROFIT] > 0) {
        $p++;
        $profit += $r[PROFIT];
    }
    else if ($r[PROFIT] <= 0) {
        $l++;
        $loss += $r[PROFIT];
    }
}
$noacc = $p + $l;
$table['rows'][] = array(array('v' => 'No Acc'), array('v' => $noacc));
$table['rows'][] = array(array('v' => 'Profit'), array('v' => $p));
$table['rows'][] = array(array('v' => 'Loss'), array('v' => $l));
$jsonTable = json_encode($table);
echo $jsonTable;