检索要在PHP代码中使用的数据库记录

时间:2012-10-14 02:51:27

标签: php mysql sql wampserver

我正在为工作室预订制作代码,客户可以预订一天中的工作时间...例如,客户输入 日期: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的知识非常有限...... :(请有人帮帮我。请拜托

1 个答案:

答案 0 :(得分:0)

我建议您重新考虑处理预订期限的方式。而不是让date_reserved只有time_intime_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!";
}