Codeigniter - 预约功能

时间:2017-02-26 07:10:37

标签: php mysql codeigniter

我一直在努力完成我的预约功能,你们中的一些人甚至可能已经认识我,因为我一直试图在这里连续几天提出很多关于这个功能的问题。我一直在努力创建一个预约功能,用户可以在任何日期为篮球场预留。管理员将批准预订,因为有时,法院由村管理员使用,因此不能使用。因此,在批准时,将进行验证以检查是否已经采用该日期,如果已采用,则不会批准。这是我的数据库表。

enter image description here

因此,reservation_start和reservation_end数字表示各自的小时数,6表示下午6点,7表示下午7点,依此类推。我所做的是创建一个模型来检查是否已经使用了一个插槽,并且我创建了一个阵列,只要一小时就用作交换机。我还使用“group_by”查询将我的预订日期分组为一个,这样只要有不同的日期,就会重置开关。我的问题是交换机被转移到其他日期。在上面的例子中,02/26/2017从晚上7点到晚上10点保留。这意味着开关将从7到9“开启”(以便在晚上10:00开始时仍保留开始时间)。然后,在3月3日,交换机正在被转移,这意味着我不能保留它们,因为它读取已经采取了7点,因此我无法在下午6点到晚上8点预订。

这是代码。

function checkexisting_reserve_courtone()
{
    $checkresult = $this->db->select('*')->from('courtone_reservation')->where('reservation_status', 1)->group_by('reservation_date')->get();
    $resultreserve = $checkresult->result();

    $tdX = array(0,0,0,0,0,0,0,0,0,0,0);
    foreach($resultreserve as $result)
    {

        while($result->reservation_start < $result->reservation_end)
        {
            $tdX[$result->reservation_start] = 1;
            $result->reservation_start++;
        }
    }

    foreach($resultreserve as $result)
    {
        $reserveactualend = $result->reservation_end - 1;
        if($tdX[$result->reservation_start] == 1 || $tdX[$reserveactualend] == 1) 
        {
            return FALSE;
            break;
        }
    }
    return TRUE;
}

这里有复出吗?非常感谢任何帮助!

0 个答案:

没有答案