谷歌图表和MYSQL

Man*_*nos 1 html php mysql google-visualization

我是PHP和Google图表的新手.我想用它来制作谷歌图表与arduino数据存储在MYSL数据库中.到目前为止,我成功地将数据从arduino插入到mysql数据库,但我遇到了谷歌图表的困难.

这是我的PHP代码:

<?php


  $mysqli =mysqli_connect('localhost', 'root', '', 'Arduino');
if (mysqli_connect_errno()) {
    echo "Failed to connect to MySQL: ".mysqli_connect_error();
}


  $sql = mysqli_query($mysqli, 'SELECT * FROM analoog0');

  if (!$sql) {
  die("Error running $sql: " . mysql_error());
  }



  $results = array();
  while($row = mysqli_fetch_assoc($sql))
{
   $results[] = array(
      'Date' => $row['Date'],
      'Time' => $row['Time'],
      'Temperature' => $row['Temperature']
   );
}
$json = json_encode($results, JSON_PRETTY_PRINT);
echo $json;

?>
Run Code Online (Sandbox Code Playgroud)

这是JSON输出:

[ { "Date": "2013-10-24", "Time": "18:15:49", "Temperature": "24" }, 
{ "Date": "2013-10-24", "Time": "18:16:19", "Temperature": "24" }, 
{ "Date": "2013-10-24", "Time": "18:16:49", "Temperature": "24" }, 
{ "Date": "2013-10-24", "Time": "18:17:19", "Temperature": "23" } ]
Run Code Online (Sandbox Code Playgroud)

最后是HTM代码:

<html>
  <head>
    <!--Load the AJAX API-->
    <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: "localhost/Charts/chart_ver2.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.LineChart(document.getElementById('chart_div'));
      chart.draw(data, {width: 400, height: 240});
    }

    </script>
  </head>

  <body>
    <div id="chart_div"></div>
  </body>
</html>
Run Code Online (Sandbox Code Playgroud)

当我运行HTM代码时没有任何反应 - 屏幕保持空白.

任何帮助,指导或重定向将受到高度赞赏!提前致谢!!

asg*_*ant 6

您需要为Visualization API正确格式化数据.这应该使您的数据格式正确:

$results = array(
    'cols' => array (
        array('label' => 'Date', 'type' => 'datetime'),
        array('label' => 'Temperature', 'type' => 'number')
    },
    'rows' => array()
);
while($row = mysqli_fetch_assoc($sql)) {
    // date assumes "yyyy-MM-dd" format
    $dateArr = explode('-', $row['Date']);
    $year = (int) $dateArr[0];
    $month = (int) $dateArr[1] - 1; // subtract 1 to make month compatible with javascript months
    $day = (int) $dateArr[2];

    // time assumes "hh:mm:ss" format
    $timeArr = explode(':', $row['Time']);
    $hour = (int) $timeArr[0];
    $minute = (int) $timeArr[1];
    $second = (int) $timeArr[2];

    $results['rows'][] = array('c' => array(
        array('v' => "Date($year, $month, $day, $hour, $minute, $second)"),
        array('v' => $row['Temperature'])
    ));
}
$json = json_encode($results, JSON_NUMERIC_CHECK);
echo $json;
Run Code Online (Sandbox Code Playgroud)

在你的javascript中,我建议重新安排你处理AJAX查询的方式.对于你这样做的方式,每次发言都没有错,但我认为这是一个更优雅的解决方案:

function drawChart() {
    $.ajax({
        url: 'localhost/Charts/chart_ver2.php',
        dataType: 'json',
        success: function (jsonData) {
            // 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.LineChart(document.getElementById('chart_div'));
            chart.draw(data, {width: 400, height: 240});
        }
    });
}
Run Code Online (Sandbox Code Playgroud)