【发布时间】:2014-05-15 21:06:27
【问题描述】:
我现在正在学习 php,我想制作一个租车系统来挑战自己。
现在我遇到了一个验证问题,我有 5 辆不同的汽车,想检查汽车在用户提交的日期是否可用。
我的数据库表有一个开始日期、结束日期、汽车和一个 ID
这就是我想要开始的工作:
if($_POST){
$date1 = $_POST["startdate"];
$date2 = $_POST["enddate"];
$car= $_POST["car"];
$qry1 = "SELECT * FROM hire WHERE startdate between '{$date1}' and '{$date2}'
UNION
SELECT * FROM hire WHERE enddate between '{$date1}' and '{$date2}'";
$qry2 = "SELECT * from hire WHERE car = '{$car}'";
$results = mysql_query($qry1, $bd);
$results2 = mysql_query($qry2, $bd);
$row = mysql_num_rows($results);
$row2 = mysql_num_rows($results2);
if ($row && $row2 > 1 ){
die("it twerks");
}
else {
//do stuff\
}
}
现在它说它始终可用。
编辑
start 和 enddate 是 DATE 字段格式是 Y-m-d。
【问题讨论】:
-
首先,如果你正在学习 PHP,你应该使用 MySQLi 的 PDO 来学习,而不是 MySQL,因为它已被弃用。
startdate和enddate是哪些字段类型?您查询它们的方式需要是 DATE 字段,如果不是,您需要将字段名称包装在DATE()中以使其成为日期字段。另外,通过 post 变量输入的开始日期和结束日期是什么格式?最后,您的 if 语句在两个变量上都需要 >1,例如if($row > 1 && $row2 > 1) {(请记住,如果每个查询有 两行或多行,那么... -
感谢您的评论,我会查看 MySQLi 我已经尝试过但没有使用它,不知道为什么,结束日期和开始日期字段名称是 DATE 字段(将编辑此)。格式为 Y-m-d,您的评论在“then....”之后中断,看不到其余部分。
-
你说得对,真奇怪。基本上 - 确保那些条件是你想要的。您想要两行或多行还是只需要一行或多行 (>0)?
-
想我想要两行,一排检查汽车,另一排检查日期,然后结合起来检查汽车在用户填写的日期是否可用