按日期选择器范围排序表
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"> <input type="date" name="dateTo">
<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个日期选择器。限制范围。默认日期 当前日期