请原谅我在这方面缺乏知识,但我是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);
}
SOLVED
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);
}