来自mysql,php/JQuery的谷歌折线图


Google linechart from mysql, php / JQuery

我已经学习了一些程序,现在我需要从MySQL中获取数据,并用HTML/PHP显示它。我用这个MySQL.php文件从MySQL获取数据:

<?php
    $hostname = "localhost";
    $database = "database";
    $username = "username";
    $password = "password";
    $connect = mysql_connect($hostname, $username, $password)
    or die('Could not connect: ' . mysql_error());
    $bool = mysql_select_db($database, $connect);
    if ($bool === False){
       print "can't find $database";
    }
    $query = "SELECT * FROM  `table` ORDER BY timestamp LIMIT 0 , 100";
    $result = mysql_query($query) or die("SQL Error 1: " . mysql_error());
    // get data and store in a json array
    while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
        $values[] = array(
            'timestamp' => $row['timestamp'],
            'temperature' => $row['temperature'],
          );
    }
    echo json_encode($values);
?>

然后我尝试将其显示到谷歌图表:

<html>
<body>
<script type="text/javascript" src="https://www.google.com/jsapi"></script>
    <script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.10.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() {
      var jsonData = $.ajax({
          url: "http://localhost:8081/xampp/testi/mysql.php",
          dataType:"json",
          async: false
          }).responseText;
      // Create our data table out of JSON data loaded from server.
      var data = new google.visualization.DataTable(jsonData);
      // Instantiate and draw our chart, passing in some options.
      var chart = new google.visualization.PieChart(document.getElementById('chart_div'));
      chart.draw(data, {width: 400, height: 240});
    }
    </script>
    <div id="chart_div"></div>
</body>
</html>

但它只是给出了一个错误:

打开照片

JSON格式在某种程度上是很长的,但是如何呢?

您的JSON应该像这样格式化

{
"cols": [
    {"id":"","label":"Topping","pattern":"","type":"string"},
    {"id":"","label":"Slices","pattern":"","type":"number"}
  ],
"rows": [
    {"c":[{"v":"Mushrooms","f":null},{"v":3,"f":null}]},
    {"c":[{"v":"Onions","f":null},{"v":1,"f":null}]},
    {"c":[{"v":"Olives","f":null},{"v":1,"f":null}]},
    {"c":[{"v":"Zucchini","f":null},{"v":1,"f":null}]},
    {"c":[{"v":"Pepperoni","f":null},{"v":2,"f":null}]}
  ]
}

因此,当您试图将JSON转换为DataTable时,由于格式不正确,因此不会得到任何返回。点击此处阅读更多内容。

尝试像一样格式化JSON

var jsonData = {}
jsonData.cols = [
      {"label":"Date w/ time", "type":"date"},
      {"label":"Temp", "type":"number"}
  ]
jsonData.rows = [
     {"c":[{"v":new Date(2015, 11, 1, 12, 23)}, {"v":50}]},
     {"c":[{"v":new Date(2015, 11, 1, 12, 24)}, {"v":75}]}
]

您尚未定义DataTable列。尝试将其定义为以下或检查DataTable类参考

// Create data table
var data = new google.visualization.DataTable();
data.addColumn('string', 'Timestamp');
data.addColumn('string', 'Temperature');