php - 检查输入的开始和结束日期是否在数据库中已有的开始和结束日期之间

标签 php mysql validation date datetime

我正在制作租车预订脚本。用户将在预订时输入两个日期,开始日期和结束日期,我需要检查输入的日期是否在已存储在该特定汽车的数据库中的日期之间, 简而言之,如果从 2015-23-08 到 2015-25-08 预订汽车,并且用户输入了这两个日期之间的日期,则显示错误,否则应下订单。

代码中的问题:即使我输入了不同的值,它也总是显示“介于两者之间”

代码:

include 'connection.php';
if (isset($_GET['id'])) {
// escape variables for security
$fleettype = $_POST['fleettype'];
$fleetname = $_POST['fleetname'];
$fleetclass = $_POST['fleetclass'];
$fleetdescription = $_POST['fleetdescription'];
$fleetprice = $_POST['fleetprice'];
$username = $_POST['username'];
$useremail = $_POST['useremail'];
$userphone = $_POST['userphone'];
$sdate = $_POST['sdate'];
$edate = $_POST['edate'];
$time = $_POST['time'];
$driver = $_POST['driver'];
$useremail = $_POST['useremail'];
$id = preg_replace('#[^0-9]#i', '', $_GET['id']);
$products = mysqli_query($con, "SELECT * FROM fleet WHERE id='$id' LIMIT 1 ");
while ($row = mysqli_fetch_assoc($products))
{ 

         $stime = $row["stime"];
         $etime = $row["etime"];
         }


$entereddate = DateTime::createFromFormat('Y/m/d', $stime);
$contractDateBegin = DateTime::createFromFormat('Y/m/d', $sdate);
$contractDateEnd = DateTime::createFromFormat('Y/m/d', $edate);


if ($entereddate >= $contractDateBegin && $entereddate <= $contractDateEnd)
{
 echo "in between";
}

else {
  echo "no";
}

}   

最佳答案

如果日期有助于变量,则无需将日期用单引号引起来,因此请像这样更改`createFromFormat 语句。

此外,else 必须有一个 echo“no”,而您刚刚有一个 “no”

$entereddate       = DateTime::createFromFormat('Y/m/d', $stime);
$contractDateBegin = DateTime::createFromFormat('Y/m/d', $sdate);
$contractDateEnd   = DateTime::createFromFormat('Y/m/d', $edate);

if ($entereddate >= $contractDateBegin && 
    $entereddate <= $contractDateEnd)
{
    echo "in between";
} else {
    echo "no";
}

这样做可能会得到更好的结果,因为我很确定你无法比较这样的 DateTime 对象。

$entereddate       = strtotime($stime);
$contractDateBegin = strtotime($sdate);
$contractDateEnd   = strtotime($edate);


if ($entereddate >= $contractDateBegin &&
    $entereddate <= $contractDateEnd)
{
    echo "in between";
} else {
    echo "no";
}

关于php - 检查输入的开始和结束日期是否在数据库中已有的开始和结束日期之间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31976277/

相关文章:

php - 选择语法未正确显示(不确定是否重复)

php - OCI8 + PHP7.1 + Windows10 : The specified module could not be found

javascript - 将 php 正则表达式转换为 javascript

三层架构中的验证

php - 在一对多关系 laravel 5 中保存多条记录

php - 按级别统计结果

mysql - jsp, 拖放, mysql, treeview

mysql - Mariadb 更新和替换

javascript - 验证带有复选框和文本字段的动态 php 网格

validation - 如何在 VBScript 中检查字符串是否为字母数字?