dreamice2013
dreamice2013
2013-12-06 17:49

谷歌图表json问题

已采纳

Help me to solve this 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;

I get the following type of json code

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

i use the following google chart code

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

Finally When I load the page in my browser just shows the value 1199 value only in the chart ,Any example would help! Thank you.

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

2条回答

  • dongyaofu0599 dongyaofu0599 8年前

    Your problem is that the PieCharts expect data in two columns: pie slice label and pie slice value. You need to alter your PHP to return the appropriate structure:

    $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;
    
    点赞 评论 复制链接分享
  • doujiao8649 doujiao8649 8年前

    Why do you need such a complicated structure for data. You can return following json from the PHP script:

    data = [
        ['label','value'],
        ['No Acc',1199],
        ['Profit',261],
        ['Loss',938]
    ];
    
    点赞 评论 复制链接分享

相关推荐