Я пытаюсь добавить фильтр диапазона дат, чтобы нарисовать диаграмму (используя диаграмму Google) на моей веб-странице с помощью php. Эта веб-страница используется для отображения значений моего датчика, извлеченных из базы данных.
Вот мой код: -
</p>
<?php
$DB_NAME = 'temp_database';
$DB_HOST = 'localhost';
$DB_USER = 'root';
$DB_PASS = '';
$mysqli = new mysqli($DB_HOST, $DB_USER, $DB_PASS, $DB_NAME);
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
global $dateFrom;
global $dateTo;
$dateFrom = new DateTime($_GET['datepickerFrom']);
$dateTo = new DateTime($_GET['datepickerTo']);
$dateFrom = mysqli_real_escape_string($mysqli, $dateFrom->format('Y-m-d'));
$dateTo = mysqli_real_escape_string($mysqli, $dateTo->format('Y-m-d'));
if($dateFrom && $dateTo !=NULL)
{
$result = $mysqli->query('SELECT datetime,temperature FROM tempLog where datetime between "dateFrom%" and "dateTo%" /*"2018-03-19%" AND "2018-03-27%"*/ order by datetime ASC');
print_r($result);
}
else
{
$result = $mysqli->query('SELECT datetime,temperature FROM tempLog');
}
echo "$dateFrom<br/>";
echo "$dateTo<br/>";
//Check if the array is empty
$yes=is_array($result);
echo "$yes";
$rows = array();
$table = array();
$table['cols'] = array(
array('label' => 'Date-Time', 'type' => 'string'),
array('label' => 'Temperature', 'type' => 'number')
);
/* Extract the information from $result */
foreach($result as $r) {
$temp = array();
$temp[] = array('v' => (string) $r['datetime']);
// Values of the each slice
$temp[] = array('v' => (float) $r['temperature']);
$rows[] = array('c' => $temp);
}
$table['rows'] = $rows;
// convert data into JSON format
$jsonTable = json_encode($table);
//echo $jsonTable;
header("Refresh: 50"); //Put the seconds after which the page needs to be refreshed
?>
<html>
<head>
<!--Load the Ajax API-->
<meta name="viewport" content="width=device-width, initial-scale=1">
<link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.5/css/bootstrap.min.css" rel="stylesheet" />
<link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
<link rel="stylesheet" href="/resources/demos/style.css">
<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 src="https://code.jquery.com/ui/1.12.1/jquery-ui.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);
/*$(window).on("throttledresize", function (event) {
drawChart();
});*/
function drawChart() {
// Create our data table out of JSON data loaded from server.
var data = new google.visualization.DataTable(<?=$jsonTable?>);
var options = {
title: 'Temperature Record updated every 5 seconds',
//is3D: 'true',
curveType: 'function',
width: "100%",
height: 500,
//legend: 'top',
axisTitlesPosition: 'out',
'isStacked': true,
//pieSliceText: 'percentage',
colors: ['#0598d8', '#f97263'],
chartArea: {
left: "15%",
top: "5%",
bottom:"40%",
height: "100%",
width: "100%"
},
vAxis:{
title:'Temperature'
},
hAxis: {
title:'Date',
minValue: 0,
maxValue: 50 },
//curveType: 'function',
pointSize: 3,
dataOpacity: 0.6
};
function resize() {
var chart = new google.visualization.LineChart(document.getElementById('chart_div'));
chart.draw(data, options);
}
window.onload = resize();
window.onresize = resize;
}
</script>
<style type="text/css">
body {
width:100%;
height: 100%;
margin:5% auto auto auto;
//background:#e6e6e6;
}
</style>
</head>
<body>
<form id="dateselect" action="date.php">
<center>From: <input type="text" id="datepickerFrom">
To: <input type="text" id ="datepickerTo">
<input type="submit">
</center>
</form>
<div class = "container" id="chart_div"></div> <!--Load bootstrap container for responsiveness-->
</body>
</html>
Проблема:
Что происходит, когда я помещаю постоянное значение вместо "$ dateFrom" и "$ dateTo" в моем sql-запросе, это работает .. Моя диаграмма генерируется для этих двух дат правильно.
НО, когда я помещаю «$ dateFrom» и «$ dateTo» вместо константных значений ($ datefrom и $ dateTo берутся динамически через форму), это не работает для любых дат и даже для тех же дат, заданных ранее как константные значения .. Моя диаграмма не показывает значений и использование print_r ($ result) дает мне 0 результатов.
Я не могу понять, что я делаю неправильно, так как я все еще новичок в MySQL и PHP.
Что касается Записи, я уже упомянул здесь , здесь & здесь но, похоже, ничего не работает. Возможно, я делаю очень глупую ошибку, но, как я уже сказал, я все еще новичок.
Спасибо за помощь!