谷歌区域图


Google Area Chart

我试图使用谷歌区域图和PHP来显示一些数据。问题是我就是不能让它工作。如果有人能帮忙,我将不胜感激。

下面是我的代码:
<script type="text/javascript" src="https://www.google.com/jsapi"></script>
    <script type="text/javascript">
      google.load("visualization", "1", {packages:["corechart"]});
      google.setOnLoadCallback(drawChart);
      function drawChart() {
        var data = new google.visualization.DataTable();
        data.addColumn('string', 'Date');
        data.addColumn('number', 'hits');
        data.addRows([
        <?php
$query = mysql_query("SELECT * FROM hits WHERE url='$url' GROUP BY date");
 while ($row = mysql_fetch_array($query)){
$hits=mysql_num_rows($query);
$date=$row['date'];?>
 ['<?php echo "$date";?>', <?php echo ".$hits.";?>],
<?php } ?>
]);
        var chart = new google.visualization.AreaChart(document.getElementById('chart_div'));
        chart.draw(data, {width: 400, height: 240, title: 'Company Performance',
                          hAxis: {title: 'Date', titleTextStyle: {color: '#FF0000'}}
                         });
      }
    </script>
    <div id="chart_div"></div>

我绝对建议将PHP(服务器端)代码与JavaScript/html(客户端)代码分开。

关于谷歌图表和图形api的好处是有几个例子可以借鉴,但是当你在包含JavaScript和UI元素的块中嵌入PHP和MySQL查询时,复制你正在查看的东西变得更加困难。

下面是一个关于你"可能"如何划分这些东西的粗略例子。在现实中,你会希望你的服务器端代码(在你的情况下PHP)在一个完全独立的文件从你的显示/用户界面代码(HTML和JavaScript)。

"前端代码"块中的"DATE"answers"HITS"实际上不是变量或值,我只是指出这是您输入值的地方。理想情况下,您可以将MySQL查询中的数据通过PHP服务器代码传递给JavaScript代码,然后在那里进行迭代以构建图形。使用JSON数据交换格式可以很好地完成从PHP到JS的来回传递。PHP和JavaScript (jQuery)都有编码和解码JSON的函数。

前端代码:

<script type="text/javascript">
  google.load("visualization", "1", {packages:["corechart"]});
  google.setOnLoadCallback(drawChart);
  function drawChart() {
    var data = new google.visualization.DataTable();
    data.addColumn('string', 'Date');
    data.addColumn('number', 'hits');
    data.addRows(
       ['DATE', 'HITS']
    );
    var chart = new google.visualization.AreaChart(document.getElementById('chart_div'));
    chart.draw(data, {width: 400, height: 240, title: 'Company Performance',
                      hAxis: {title: 'Date', titleTextStyle: {color: '#FF0000'}}
                     });
  }
</script>
<div id="chart_div"></div>

后端代码:

<?php
$query = mysql_query("SELECT * FROM hits WHERE url='$url' GROUP BY date");
$data_to_return = array();
while ($row = mysql_fetch_array($query))
{
    $hits=mysql_num_rows($query);
    $date=$row['date'];
    $data_to_return[$date] = $hits; //building array of date=>hits data
}
$data_to_send_to_front_end = json_encode($data_to_return); //ridiculous variable name
?>