我有两个日期变量,date_from和date_to,我可以读入它们之间的每个值吗?

时间:2016-11-11 01:15:00

标签: php mysql codeigniter date

请原谅我对此缺乏了解,但我是PHP的新手。我们正在做一个关于codeigniter的项目,我正在把头发拉出来!

我正在做一个项目预订网站。用户可以按日期搜索房产,并在这些日期可用时发出预订请求。我有一个属性表,一个请求表(状态将根据主机是否接受而改变)和一个预订表。一旦主机接受来自用户的请求,请求的状态将在请求表上更新,并且新条目将被添加到预订表中

我们的讲师希望我们使用这种逻辑。

如果从1月1日至5日预订了酒店,那么预订表中将有5个条目用于每个日期。

您是否可以提供有关如何在$ date1和$ date2之间的每个日期进行阅读循环的建议?

这是我的控制器

public function acceptBooking()
{
    $request_id = $this->input->post('request_id');
    $user_id = $this->session->userdata('user_id');
    $property_id = $this->input->post('property_id');
    $date1= $this->input->post('date1');
    $date2 = $this->input->post('date2');
    $status = $this->input->post('status');

    $data = array(
        'request_id'=>$request_id,
        'user_id'=>$user_id,
        'property_id'=>$property_id,
        'date1' => $date1,
        'date2' => $date2,
        'status' => $status
    );

    $this->model_booking_status->update_status($request_id,$data);
    $this->model_booking_status->insert_bookingToDB();

    $this->load->view('view_accept_success');

}

和我的模特

public function insert_bookingToDB(){
    $user_id = $this->session->userdata('user_id');
    $property_id = $this->input->post('property_id');
    $date1= $this->input->post('date1');
    $date2 = $this->input->post('date2');
    $status = $this->input->post('status');

    for(*****){
            $sql = "INSERT INTO bookings(user_id,property_id,property_date)
    VALUES (" . $this->db->escape($user_id) . ",
            " . $this->db->escape($property_id) . ",
            " . $this->db->escape($property_date) .")";
            $result = $this->db->query($sql);
        }

}

function update_status($request_id,$data)
{
    $this->db->where('request_id', $request_id);
    $this->db->update('requests', $data);
}

}

我有函数update_status工作,它允许主机接受请求,并在数据库上更新,供用户查看。老实说,我不知道从哪里开始阅读日期并将每个日期输入数据库。我有***我的循环只是为了表明我在做什么,我的数据库上的日期格式是YYYY-MM-DD,并且是预订表上的property_date。

感谢工厂,如果我像个白痴一样的话,再次感到抱歉!

已解决:)

while (strtotime($date1) <= strtotime($date2)) {
        echo "$date1\n";
        //use +1 month to loop through months between start and end dates
        $date1 = date ("Y-m-d", strtotime("+1 day", strtotime($date1)));
        $sql = "INSERT INTO bookings(user_id,property_id,property_date)
    VALUES (" . $this->db->escape($user_id) . ",
            " . $this->db->escape($property_id) . ",
            " . $this->db->escape($date1) .")";
        $result = $this->db->query($sql);
    }

1 个答案:

答案 0 :(得分:0)

解决

while (strtotime($date1) <= strtotime($date2)) {
    echo "$date1\n";
    //use +1 month to loop through months between start and end dates
    $date1 = date ("Y-m-d", strtotime("+1 day", strtotime($date1)));
    $sql = "INSERT INTO bookings(user_id,property_id,property_date)
VALUES (" . $this->db->escape($user_id) . ",
        " . $this->db->escape($property_id) . ",
        " . $this->db->escape($date1) .")";
    $result = $this->db->query($sql);
}