我正在尝试从MySQL数据库生成google图表。我推荐这个职位:PHP MySQL Google Chart JSON - Complete Example
我做了帖子中提到的所有事情,但是在网页上看到了这个:
'Weekly Task','type'=>'string'),array('label'=>'Percentage','type'=>'number');$rows=array();while($r=mysql fetch_assoc($sth)){$temp=array();//以下行将用于切片饼图$temp[]=array('v'=>(string)$r['Weekly_Task']);///每个切片的值$temp[]=array('v'=>(int)$r['Percentage']);$rows[]=数组('c'=>$temp);}$table['rows']=$rows;$jsonTable=json_encode($table);//echo$jsonTable?>
我试着检查了数据库,似乎一切都很好。
代码:

 <html>
  <head>
    <!--Load the Ajax API-->
    <script type="text/javascript" src="https://www.google.com/jsapi"></script>
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
    <script type="text/javascript">

    // Load the Visualization API and the piechart package.
    google.load('visualization', '1', {'packages':['corechart']});

    // Set a callback to run when the Google Visualization API is loaded.
    google.setOnLoadCallback(drawChart);

    function drawChart() {

      // Create our data table out of JSON data loaded from server.
      var data = new google.visualization.DataTable(<?=$jsonTable?>);
      var options = {
           title: 'My Weekly Plan',
          is3D: 'true',
          width: 800,
          height: 600
        };
      // Instantiate and draw our chart, passing in some options.
      // Do not forget to check your div ID
      var chart = new google.visualization.PieChart(document.getElementById('chart_div'));
      chart.draw(data, options);
    }
    </script>
  </head>

  <body>
    <?php
$con=mysql_connect("localhost","root","password") or die("Failed to connect with database!!!!");
mysql_select_db("googlecharts", $con);
// The Chart table contains two fields: weekly_task and percentage
// This example will display a pie chart. If you need other charts such as a Bar chart, you will need to modify the code a little to make it work with bar chart and other charts
$sth = mysql_query("SELECT weekly_task, percentage FROM chart");

/*
---------------------------
example data: Table (Chart)
--------------------------
weekly_task     percentage
Sleep           30
Watching Movie  40
work            44
*/

$rows = array();
//flag is not needed
$flag = true;
$table = array();
$table['cols'] = array(

    // Labels for your chart, these represent the column titles
    // Note that one column is in "string" format and another one is in "number" format as pie chart only required "numbers" for calculating percentage and string will be used for column title
    array('label' => 'Weekly Task', 'type' => 'string'),
    array('label' => 'Percentage', 'type' => 'number')

);

$rows = array();
while($r = mysql_fetch_assoc($sth)) {
    $temp = array();
    // the following line will be used to slice the Pie chart
    $temp[] = array('v' => (string) $r['Weekly_task']);

    // Values of each slice
    $temp[] = array('v' => (int) $r['percentage']);
    $rows[] = array('c' => $temp);
}

$table['rows'] = $rows;
$jsonTable = json_encode($table);
//echo $jsonTable;
?>
    <!--this is the div that will hold the pie chart-->
    <div id="chart_div"></div>
  </body>
</html>

更新
我把HTML和PHP代码分成不同的文件。
现在我得到了空白网页。
代码:
菲律宾比索:
<?php
$con=mysql_connect("localhost","root","pass") or die("Failed to connect with database!!!!");
mysql_select_db("googlechart", $con);
// The Chart table contains two fields: weekly_task and percentage
// This example will display a pie chart. If you need other charts such as a Bar chart, you will need to modify the code a little to make it work with bar chart and other charts
$sth = mysql_query("SELECT weekly_task, percentage FROM chart");

/*
---------------------------
example data: Table (Chart)
--------------------------
weekly_task     percentage
Sleep           30
Watching Movie  40
work            44
*/

$rows = array();
//flag is not needed
$flag = true;
$table = array();
$table['cols'] = array(

    // Labels for your chart, these represent the column titles
    // Note that one column is in "string" format and another one is in "number" format as pie chart only required "numbers" for calculating percentage and string will be used for column title
    array('label' => 'Weekly Task', 'type' => 'string'),
    array('label' => 'Percentage', 'type' => 'number')

);

$rows = array();
while($r = mysql_fetch_assoc($sth)) {
    $temp = array();
    // the following line will be used to slice the Pie chart
    $temp[] = array('v' => (string) $r['Weekly_task']);

    // Values of each slice
    $temp[] = array('v' => (int) $r['percentage']);
    $rows[] = array('c' => $temp);
}

$table['rows'] = $rows;
$jsonTable = json_encode($table);
//echo $jsonTable;
?>

HTML格式:
<?php
    include('new.php');
    ini_set('display_errors', 1);
    error_reporting(E_ALL);
?>

 <html>
  <head>
    <!--Load the Ajax API-->
    <script type="text/javascript" src="https://www.google.com/jsapi"></script>
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
    <script type="text/javascript">

    // Load the Visualization API and the piechart package.
    google.load('visualization', '1', {'packages':['corechart']});

    // Set a callback to run when the Google Visualization API is loaded.
    google.setOnLoadCallback(drawChart);

    function drawChart() {

      // Create our data table out of JSON data loaded from server.
      var data = new google.visualization.DataTable(<?=$jsonTable?>);
      var options = {
           title: 'No. of Kills',
          is3D: 'true',
          width: 800,
          height: 600
        };
      // Instantiate and draw our chart, passing in some options.
      // Do not forget to check your div ID
      var chart = new google.visualization.PieChart(document.getElementById('chart_div'));
      chart.draw(data, options);
    }
    </script>
  </head>

  <body>

    <!--this is the div that will hold the pie chart-->
    <div id="chart_div"></div>
  </body>
</html>

最佳答案

有几件事需要调整我会试着把它们逐项列出。
把所有的东西都放在一个文件中,这样可以减少混淆,而且拆分代码并没有真正的好处。
mysql_函数换成至少mysqli_函数。
将google visualization javascript代码块移动到DOM元素后面的一行,DOM元素将接收它。(如果你试图把内容放到一个不存在的元素中,你就什么也看不见了。)
您的问题中没有提供示例数据,所以我不知道$jsonTable是否提供了正确的数据——您需要自己评估。
在实现上述更正时,请确保检查代码中是否存在服务器端错误。
如果没有服务器端错误,但未显示图形,则:
检查页面的源代码并确认DateTable()函数包含来自$jsonTable变量的正确/实际数据字符串。
访问浏览器的开发人员工具界面并查找任何错误消息。这些将是客户端错误。
如果您仍处于困境,需要更多信息,或希望看到类似的工作示例,请转到here
这里是Google Charts Reference Page

10-07 12:37
查看更多