我有一个数据库,其中有一个名为dates的表。在此表中有start_date和end_date,两种类型都是日期。例如,在表格中,有一个2018-01-25的start_date和2018-01-31的end_date。如何阻止其他人提交我的表单,并在两者之间提供日期。
这是我的表格:
<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,它会重定向到错误页面而不是提交重复数据。
我有一种感觉,验证位是代码的一部分,但是我不知道如何修复它。
答案 0 :(得分:-1)
在SQL查询中使用Ruby 2.3.3, rails 5.0.1
子句。它将根据条件过滤选定的行。您可以在那里指定开始日期和结束日期。对它的查询是这样的。
where
中的AND
表示如果两个条件均为真,则选择该行,否则不选择它。'
start_date = yourStartDate AND end_date = yourEndData
注意:您不再需要验证(if语句),只需检查查询是否返回了如下所示的行。
SELECT * FROM dates WHERE start_date = yourStartDate AND end_date = yourEndData