我有一个数据库,其中有一个名为日期的表。该表中有start_date和end_date,两种类型都是日期。例如,假设表中的 start_date 为 2018-01-25,end_date 为 2018-01-31。我怎样才能阻止其他人提交我的表格,其中的日期介于两者之间。
这是我的表格:
<form method="POST" action="dates.php" enctype="multipart/form-data" autocomplete="off">
<label>Start Date *</label>
<input name="startDate" id="startDate" type="date" required>
<label>End Date *</label>
<input name="endDate" id="endDate" type="date" required>
<input type="submit" name="submit" value="Submit">
<input type="reset" name="reset" value="Reset">
</form>
提交表格后,日期将以我之前提到的相同格式放置在表格中。
在dates.php中,我得到startDate和endDate,如下所示:
$start = $_REQUEST['startDate'];
$end = $_REQUEST['endDate'];
然后我尝试添加某种形式的验证:
$sql = " SELECT * FROM dates WHERE start_date = '$start' AND end_date = '$end'";
$result = mysqli_query($conn, $sql);
$row_cnt = mysqli_num_rows($result);
if($row_cnt > 0) {
$isBooked = true;
} else {
$isBooked = false;
}
然后我有一个函数,如果 isRepeat = true 它会重定向到错误页面而不是提交重复的数据。
我有一种感觉,验证位是代码的一部分,但我不知道如何修复它。
Use where
sql 查询中的子句。它将根据条件过滤选定的行。您可以在那里指定开始和结束日期。对它的查询是这样的。
the AND
in the start_date = yourStartDate AND end_date = yourEndData
意味着如果两个条件都为真,则选择该行,否则不选择它..'
SELECT * FROM dates WHERE start_date = yourStartDate AND end_date = yourEndData
Note:您不再需要验证(if 语句),只需检查查询是否返回如下所示的任何行。
$isRepeat = (mysqli_num_rows($result)==0);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)