按日期选择器范围排序表

Posted

技术标签:

【中文标题】按日期选择器范围排序表【英文标题】:Sort Table via Date Picker Range 【发布时间】:2018-09-01 01:58:10 【问题描述】:

我正在尝试通过日期选择器范围(服务器端)对数据表进行排序,但无法使日期排序部分正常工作。肯定有漏码等问题。

我错过了什么?

<html lang="en">
<head>
<title>List</title>
<script src="jquery-3.3.1.min.js"></script>
</head>
<body>
<h1 align="center">List</h1>
</br>
</br>
</br>
        <center> <p class="search_input">
        <form method="post" action="#">
        <input type="date" name="dateFrom">&nbsp;&nbsp;&nbsp;<input type="date" name="dateTo">&nbsp;&nbsp;&nbsp;
        <input type="submit" name="range" id="range" class="btn-info" />
        </form>
        </center>

<table align="center" cellspacing="0" cellpadding="0">
  <thead class="fixedthead">
  <th  style="text-align: center; color: navy">Name</th>
  <th  style="text-align: center; color: navy">Description</th>
  <th  style="text-align: center; color: navy">Date</th>
  <th  style="text-align: center; color: navy">Open</th>
  </thead>

  <?php 
//retrieve content via data picker range
$dateFrom = $_POST['dateFrom'];
$dateTo = $_POST['dateTo'];


  $conn = mysqli_connect("localhost", "root", "", "order");
      // get results from database
  $result = mysqli_query($conn, "SELECT * FROM order.item WHERE date BETWEEN '$dateFrom' AND '$dateTo' ", MYSQLI_USE_RESULT)
  or die(mysqli_error($conn));
  while($row = mysqli_fetch_array( $result )) 
  ?>

    <tbody>   
    <tr>     
    <td  style="text-align: center"><?php echo $row['name']; ?></td>
    <td  style="text-align: center"><?php echo $row['description']; ?></td>
    <td  style="text-align: center"><?php echo $row['date']; ?></td>
    <td ><a href = "download.php?id=<?php echo $row['id']; ?>" style='text-decoration:none;'><button>View</button></a></td>
   </tr>
  </tbody>
</table><br><br><br>
<?php

?>

</body>
</html>

感谢任何帮助。谢谢大家!

【问题讨论】:

为什么while 循环是空的? 首先,你想了解SQL Injection,你的代码是易受攻击的!其次,BETWEEN '$dateFrom%' AND '$dateTo%'BETWEEN '$dateFrom%' AND '$dateTo%' 表达式中的百分号是做什么用的? @sticky bit - 这实际上来自我忘记取出的 SQL LIKE 运算符。 LIKE 在约会时做什么?它们不存储为varchar,是吗?如果是,请更改它并使用正确的数据类型,例如 date @stickybit - 是的,我同意。我只是在测试,然后把它拿出来。 【参考方案1】:

对您的数据库一无所知...

$last_five_days = time() - 432000;
$sql = "SELECT * FROM order.item WHERE order.date > ".$last_five_days." ORDER BY order.date ASC";

如果此答案没有帮助,那么您需要向我们提供有关“日期选择器范围”的含义的更多信息。

ORDER BY column ASC|DESC 按指示的列对行进行排序。默认为ASC

我正在使用WHERE 子句来设置您的最后五天要求。我假设order.date(无论你实际命名的那个)正在存储一个简单的 UNIX 时间戳

【讨论】:

ORDER 子句出现在 WHERE 子句之后。 @stickybit,是的!感谢您了解这一点。 @JBH - 嗨!我在上面添加了一个屏幕截图。日期选择器是 FROM 和 TO,据说它会通过指定的日期范围对内容进行排序。 @David,为了清楚起见,“过去 5 天”问题无关紧要,因为用户提供了日期范围的两边? @JBH - 是的,这是一个不同的概念,但与日期范围排序完全无关。

以上是关于按日期选择器范围排序表的主要内容,如果未能解决你的问题,请参考以下文章

日期范围选择器类似于 Google Analytics 日期范围选择器? [关闭]

剑道日期选择器选择日期应该从年份开始

jQuery 日期选择器。 2个日期选择器。限制范围。默认日期 当前日期

用于选择开始和结束日期的数据范围选择器

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

材料日期范围选择器显示不正确的当前日期Android