通过日期选择器日历从选定日期获取数据

Posted

技术标签:

【中文标题】通过日期选择器日历从选定日期获取数据【英文标题】:Get Data from selected dates by a datepicker calendar 【发布时间】:2015-07-06 05:27:01 【问题描述】:

您好,我有一个日期选择器日历,我想要的是我们选择两个日期,然后我想单击一个按钮,它会显示这些日期之间的所有数据。

这是我的代码...

<?php
include_once 'header.php';


$con = mysqli_connect('localhost','root','smogi','project');
if (!$con) 
    die('Could not connect: ' . mysqli_error($con));

$view = ($_GET['view']);
$username2 =$_SESSION['username'];
$sql="SELECT typeValue,unit,sensorValue,time FROM sensors WHERE username='$view' AND time BETWEEN $firstdate AND $lastdate  ORDER BY time DESC";
$result = mysqli_query($con,$sql);
echo "<table>
<tr>


</tr>";
while($row = mysqli_fetch_array($result)) 
    echo "<tr> <b>Type: </b>";
    echo stripslashes($row['typeValue']) . "<br/><b>Unit: </b>";
    echo stripslashes($row['unit']) . "<br/><b>Value: </b>";
    echo stripslashes($row['sensorValue']) . "<br/><b>Date & Time: </b>";
    echo stripslashes($row['time']) . "<br/>";
    echo "--------------------------------------------------------------------------------------------------------------";
    echo "<br/></tr>";

echo "</table>";

?>

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>jQuery UI Datepicker - Default functionality</title>
  <link rel="stylesheet" href="//code.jquery.com/ui/1.11.4/themes/smoothness/jquery-ui.css">
  <script src="//code.jquery.com/jquery-1.10.2.js"></script>
  <script src="//code.jquery.com/ui/1.11.4/jquery-ui.js"></script>
  <link rel="stylesheet" href="/resources/demos/style.css">
  <script>
  $(function() 
    var firstdate = $('#firstdatepicker').datepicker( dateFormat: 'yy-mm-dd' ).val();
    //$( "#firstdatepicker" ).datepicker();
  );
  </script>


    <script>
  $(function() 
    var lastdate = $('#lastdatepicker').datepicker( dateFormat: 'yy-mm-dd' ).val();
    //$( "#lastdatepicker" ).datepicker();
  );
  </script>
</head>
<body>
 <form method="post" action="graph.php">
<p>First Date: <input type="text" id="firstdatepicker"></p>

<p>Last Date: <input type="text" id="lastdatepicker"></p>

<input type="submit" value="Get Data" name="data"/>

</form>


</body>
</html>

但它不起作用。你能帮我吗???

感谢您的宝贵时间。

PS:在下图中我们可以看到我的数据库表是什么样子的

【问题讨论】:

我不得不回滚到your original question。您在最初没有的变量周围放置了引号,并且应该在原始帖子下标记为编辑。以防万一人们看到我的回答并问自己:“那里有引号,那么为什么要回答?” ;-) 干杯 【参考方案1】:

首先,您永远不会定义 $firstdate $lastdate。你应该喜欢这样:

$firstdate = $_POST['firstdatepicker'];
$lastdate = $_POST['lastdatepicker'];

如果它与您在“时间”列中的内容相同,则需要引用它们。

BETWEEN '$firstdate' AND '$lastdate'

对查询使用错误检查会引发语法错误

http://php.net/manual/en/mysqli.error.php

即:$result = mysqli_query($con,$sql) or die(mysqli_error($con));

MySQL 将datetime 读取为YYYY-mm-dd

https://dev.mysql.com/doc/refman/5.0/en/datetime.html

你正在使用dateFormat: 'yy-mm-dd'

另外,给你的输入命名属性:

<input type="text" id = "firstdatepicker" name = "firstdatepicker">
<input type="text" id = "lastdatepicker" name = "lastdatepicker">

添加

$firstdate = $_POST['firstdatepicker'];
$lastdate = $_POST['lastdatepicker'];

如上所述。

【讨论】:

这些值我是从脚本中获取的,例如var firstdate = $('#firstdatepicker').datepicker( dateFormat: 'yy-mm-dd' ).val(); & var lastdate = $('#lastdatepicker').datepicker( dateFormat: 'yy-mm-dd' ).val(); @DogFace 重新加载我的答案 是的,我知道,这是我转换的方式,这就是它的外观 (prntscr.com/6yt3x7) @DogFace 您没有像我在回答中所说的那样将变量用引号括起来吗?并将or die(mysqli_error($con)) 添加到您的查询中,我的回答中也有说明。 @DogFace plus,你正在使用会话$username2 =$_SESSION['username'];你开始会话了吗?【参考方案2】:

您忘记在表单中添加 name="firstdatepicker"name="lastdatepicker",您需要从 $_POST 超全局数组中填充变量(我非常希望您不要使用 register_globals=on )。

更新的 HTML 部分:

<script type="text/javascript">
  $(function() 
    $('#firstdatepicker, #lastdatepicker').datepicker( dateFormat: 'yy-mm-dd' );
  );
</script>

<form method="post" action="graph.php">
<p>First Date: <input type="text" name="firstdatepicker" id="firstdatepicker"></p>

<p>Last Date: <input type="text" name="lastdatepicker" id="lastdatepicker"></p>

<input type="submit" value="Get Data" name="data"/>

</form>

在 PHP 方面:

if (isset($_POST['firstdatepicker'])) 
  $firstDate= $_POST['firstdatepicker'];
  $lastDate= $_POST['lastdatepicker'];

  // forgot the single quotes around the dates ...
  $sql="SELECT typeValue,unit,sensorValue,time FROM sensors WHERE username='$username2' AND time BETWEEN '$firstdate' AND '$lastdate'  ORDER BY time DESC";

【讨论】:

这不是一个很有帮助的评论;)我更新了答案(忘了单引号),你能在右括号前添加die($sql); 并发布结果吗? 用于选择日期的文本字段现在消失了

以上是关于通过日期选择器日历从选定日期获取数据的主要内容,如果未能解决你的问题,请参考以下文章

在日期选择器中禁用选定日期的日期

Angular 7从Kendo UI日期选择器获取选定日期的值

如何在 jquery ui 日期选择器中同时禁用周末和选定日期?

如何从日历 eonasdan 获取当前选定日期的值

无法使用 jquery 获取 rad 日期选择器的选定日期

带有禁用日期的 ReactJS 日期范围选择器 - Rsuite