Я просмотрел много сообщений и попробовал их предложения. Но каждый раз возникает новая проблема.
Цель: создать графическую диаграмму Google, которая берет данные из таблицы MYSQL и кодирует ее в JSON. Оттуда я пытаюсь использовать html-файл для отображения диаграммы.
somefile.php:
<?php //connect to the database $username = ...; $password = ...; $hostname = ...; $database = ...; $conn = mysqli_connect($hostname, $username) or die("Unable to connect to MySQL"); echo "Connected to MySQL<br>"; //Select database $db_found = mysqli_select_db($conn,$database); if($db_found) { print "Database Found<br><br>"; } else{ print "Database NOT Found<br>"; } $sql = mysqli_query($conn, 'SELECT * FROM Travel_Test'); if (!$sql) { die("Error running $sql: " . mysql_error()); } $results = array( 'cols' => array ( array('label' => 'travel_time_date', 'type' => 'datetime'), array('label' => 'travel_time_duration', 'type' => 'number') ), 'rows' => array() ); while($row = mysqli_fetch_assoc($sql)) { //date assumes "yyyy - mm -- dd" format $dateArr = explode('-', $row['travel_time_date']); $year = (int) $dateArr[0]; $month = (int) $dateArr[1]; //subtract 1 to make compatible with javascript months $day = (int) $dateArr[2]; //time assumes "hh:mm:ss" format $timeArr = explode(':', $row['travel_time_timestamp']); $hour = (int) $timeArr[0]; $minute = (int) $timeArr[1]; $second = (int) $timeArr[2]; $results['rows'][] = array('c' => array( array('v' => "travel_time_date($year, $month, $day, $hour, $minute, $second)"), array('v' => $row['travel_time_duration']) )); } $json = json_encode($results, JSON_NUMERIC_CHECK ); echo $json; //header("Access-Control-Allow-Origin: *"); ?>
Выход JSON:
{"cols":[{"label":"travel_time_date","type":"datetime"}, {"label":"travel_time_duration","type":"number"}], "rows":[{"c": [{"v":"travel_time_date(2014, 2, 1, 1, 30, 30)"},{"v":55}]},{"c": [{"v":"travel_time_date(2014, 2, 1, 2, 30, 30)"},{"v":80}]},{"c": [{"v":"travel_time_date(2014, 2, 1, 3, 30, 30)"},{"v":60}]},{"c": [{"v":"travel_time_date(2014, 2, 1, 4, 30, 30)"},{"v":120}]}]}
anotherFile.html:
<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.10.2/jquery.min.js"></script> <script type="text/javascript"> 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:///Volumes/OS%20X%20Mountain%20Lion/Applications/XAMPP/xamppfiles/htdocs/traveltrak/travelGraphData.php", dataType:"json", async: false }).responseText; //success: function (jsonData) { //Create 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>
Когда я попытался просмотреть страницу, я проверил консоль разработчика. В нем нет проблем. Ошибка заключается в том, что страница говорит: Таблица не имеет столбцов. Любые предложения отсюда, пожалуйста?
Ваши даты введены неправильно; формат 'Date(year, month, day, hours, minutes, seconds)'
. Вам нужно заменить «travel_time_date» на «Date»:
$results['rows'][] = array('c' => array( array('v' => "Date($year, $month, $day, $hour, $minute, $second)"), array('v' => $row['travel_time_duration']) ));