2016-11-11 45 views
2

請原諒我缺乏這方面的知識,但我是PHP新手。我們正在做一個關於codeigniter的項目,我正在拉我的頭髮!我有兩個日期變量,date_from和date_to,我可以讀取它們之間的每個值嗎?

我正在做一個項目預訂網站。如果用戶可以按日期搜索房產,並在有這些日期的情況下提出預訂請求。我有一個屬性表,一個請求表(狀態將根據主機是否接受它而改變)和預訂表。一旦主機接受來自用戶的請求,請求狀態將在請求表上更新,並且新條目將被製作到預訂表中

我們的講師希望我們使用這個邏輯。

如果從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

爲什麼在世界上你想使之成爲一個血腥的惡夢這通過存儲在不同的日期使用你需要一個新的講師......數據庫,而不是隻存儲和日期,並在程序邏輯中做任何解析? – junkfoodjunkie

+2

相信我,我們強調這一點。她選擇了這個儘可能地難堪。 – Killian

+0

但是,至於原來的問題,你可以做一個for循環,並使用DateTime和 - >格式(「+ 1天」) – junkfoodjunkie

回答

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); 
} 
相關問題