我正在为工作室预订制作代码,客户可以预订一天中的工作时间...例如,客户输入 日期:2011年10月17日 时间:上午10:30:00 超时:上午11:30:00
在这种情况下,另一位客户必须无法在同一天的上午10:30至11:30之间输入/ timeout时间。
在创建数据库之前,我尝试过这段代码:
<?php
$resttimefrom='10:00:00 am';
$resttimeto='11:00:00 am';
$reserve='11:01:00 pm';
$datedat='2012-10-14';
$st_time = strtotime($resttimefrom);
$end_time = strtotime($resttimeto);
$reserve = strtotime($reserve);
$datedat = strtotime($datedat);
print $st_time; echo "<br>";
print $end_time; echo "<br>";
print $reserve; echo "<br>";
if ($reserve => $st_time and $reserve =< $end_time)
{
echo "sorry, not available";
}
else
{
echo "ok!";
}
?>
它已经可以限制时间,但还不是时间。
它只是一个样本,所以如果我将它转移到数据库中,我将知道该怎么做。
我的问题是:
我有一个名为reserve的表,有3列... timein,timeout,dateres 已输入三条记录,
2011年10月15日,10:30-11:30 2011年10月15日,1:00-2:30 2011年10月15日,5:30-8:30
如何检索这些记录以在我上面的代码中使用它?而不是这些:
$resttimefrom='10:00:00 am';
$resttimeto='11:00:00 am';
$reserve='11:01:00 pm';
$datedat='2012-10-14';
如何将上午10:00:00更改为数据库中的所有记录?
我对php和mysql的知识非常有限...... :(请有人帮帮我。请拜托
答案 0 :(得分:0)
我建议您重新考虑处理预订期限的方式。而不是让date_reserved
只有time_in
和time_out
作为datetime
。我也会使用24小时格式而不是12小时(使用AM&amp; PM)。所以你会:
$timeInStr = '2012-10-14 10:00:00';
$timeOutStr = '2012-10-14 11:00:00';
为了完整起见,这里有一些代码可以将数据插入表中:
$pdo = new PDO(
"mysql:dbname=stack_overflow;host=127.0.0.1",
$username,
$password);
// prepare the insert statement
$statement = $pdo->prepare("
INSERT INTO `reserve`(`time_in`, `time_out`)
VALUES (:time_in, :time_out)");
// bind param values
$statement->bindParam(':time_in', $timeInStr, PDO::PARAM_STR);
$statement->bindParam(':time_out', $timeOutStr, PDO::PARAM_STR);
$statement->execute();
为了确定预订请求是否与先前设置的预留冲突,请查询数据库预订请求(相当于您的$reserve
变量)是否在time_in
&amp;之间。 time_out
任何保留。
在这种情况下,我会计算先前的预订会与所请求的预订时间重叠多少。
$statement = $pdo->prepare("
SELECT COUNT(`id`)
FROM `reserve`
WHERE :reserve_request_time BETWEEN `time_in`
AND `time_out`");
$statement->bindParam(
':reserve_request_time',
'2012-10-14 10:30:00',
PDO::PARAM_STR);
$statement->execute();
$result = $statement->fetch();
// if an overlapping reservation was found "sorry, not available"
if (0 < (int) $result['COUNT(`id`)']) {
echo "sorry, not available";
}
else {
echo "ok!";
}