ส่วนของ Controller เมื่อเกิดการค้นหาจะตรวจสอบค่า POST
if (isset($_POST['submit'])) {$search_field = $this->input->post('search_field', TRUE);$value = $this->input->post('txtSearch', TRUE);$arr = array($this->Portfolio->session_name . '_search_field' => $search_field, $this->Portfolio->session_name . '_value' => $value );$this->session->set_userdata($arr);} else {$search_field = $this->session->userdata($this->Portfolio->session_name . '_search_field');$value = $this->session->userdata($this->Portfolio->session_name . '_value');}
เพิ่มค่า POST อื่นๆเข้าไปใน Controller
if (isset($_POST['submit'])) {
$search_field = $this->input->post('search_field', TRUE);
$value = $this->input->post('txtSearch', TRUE);
// เพิ่มตัวแปรอื่นๆ
$begin_date = $this->input->post('begin_date', TRUE);
$final_date = $this->input->post('final_date', TRUE);
$arr = array(
$this->Portfolio->session_name . '_search_field' => $search_field,
$this->Portfolio->session_name . '_value' => $value,
$this->Portfolio->session_name . '_begin_date' => $begin_date, //<- วันที่เริ่มต้น
$this->Portfolio->session_name . '_final_date' => $final_date //<- วันที่สิ้นสุด
);
$this->session->set_userdata($arr);
} else {
$search_field = $this->session->userdata($this->Portfolio->session_name . '_search_field');
$value = $this->session->userdata($this->Portfolio->session_name . '_value');
// เพิ่มตัวแปรอื่นๆ
$begin_date = $this->session->userdata($this->Portfolio->session_name . '_begin_date');
$final_date = $this->session->userdata($this->Portfolio->session_name . '_final_date');
}
ส่วนของ Model ที่ต้องแก้ไข
สังเกตที่ตัวแปร $where
ส่วนนี้จะเป็นค่าเริ่มต้นของระบบที่ตรวจสอบฟิลด์ที่ใช้ค้นหาแบบฟิลด์เดียว
if($search_field != '' && $value != ''){
$search_method_field = "$this->my_table.$search_field";
$search_method_value = '';
if($search_field == 'portfolio_id'){
if(!is_numeric($value)){
$value = 0;
}
$value = $value + 0;
$search_method_value = "= $value";
}
$where .= ($where != '' ? ' AND ' : '') . " $search_method_field $search_method_value ";
if($order_by == ''){
$order_by = " $this->my_table.$search_field";
}
}
// เพิ่มเงื่อนไขอื่นๆที่นี่
// รับค่าจาก SESSION
$begin_date = $this->session->userdata($this->session_name . '_begin_date');
$final_date = $this->session->userdata($this->session_name . '_final_date');
$begin_date = setDateToStandard($begin_date);
$final_date = setDateToStandard($final_date);
if($begin_date != '' && $final_date != ''){
$where .= ($where != '' ? ' AND ' : '') . " your_date_field BETWEEN $begin_date AND $final_date ";
}
เราสามารถเพิ่มโค้ดต่อท้ายโดยเช็คจาก SESSION ที่เราเพิ่มเข้าไปใน Controller แล้วก็เพิ่มคำสั่งเงื่อนไขที่ต้องการในตัวแปร $where เพิ่มจากเดิมได้เลยครับ
PHP CI MANIA - PHP Code Generator
โปรแกรมช่วยสร้างโค้ด "ลดเวลาการเขียนโปรแกรม"
ขอบคุณครับ
ตอบลบ