请原谅我对此缺乏了解,但我是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);
}
答案 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);
}