如何检查数据库中两个日期之间提交的日期?

时间:2018-01-24 21:14:11

标签: php mysql

我有一个数据库,其中有一个名为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,它会重定向到错误页面而不是提交重复数据。

我有一种感觉,验证位是代码的一部分,但是我不知道如何修复它。

1 个答案:

答案 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