การค้นหารายการในหน้า "ตารางแสดงรายการ" เราสามารถปรับแต่งส่วนของ การจัดเรียง ส่วนของการค้นหา เพิ่มเติมได้ที่ Model ที่ฟังก์ชั่น read()
ซึ่งจะมีการ Query ด้วยกัน 3 ครั้ง คือ
(1) นับจำนวนทั้งหมด (แบบไม่กำหนด WHERE) <= ปัจจุบันไม่ได้เอาไปแสดงผล
(2) นับจำนวนที่ค้นหาเจอ จะยอดที่แสดงในส่วนของ "จากทั้งหมด ..... รายการ"
(3) ดึงรายการทั้งหมดที่ค้นเจอ โดยสามารถกำหนดเงื่อนไขการแบ่งหน้าได้
จากโค้ดด้านบนนี้อธิบายง่ายๆก็คือ ถ้ามีเงื่อนไขหลัก ที่ต้องการจำกัดการแสดงผลไว้ ให้เราเอาใส่ไว้ตั้งแต่ตอนประกาศตัวแปร $where = "";
ในตัวอย่างก็คือการแสดงผลเฉพาะจังหวัดที่มีไอดีภาค 3 รายการที่กำหนดเท่านั้น
ผลลัพธ์ที่ได้ก็คือ จะมีรายการทั้งหมดแค่ 51 จาก 77 จังหวัด
และเมื่อเราค้นหาตัวแปร $where ก็จะเพิ่มเงื่อนไขเข้าไปตามค่า Generate ต่อไป
ผลลัพธ์ที่ได้ก็คือ จะแสดงแค่ 11 จังหวัด จากเงื่อนไขหลัก 51 จังหวัดเท่านั้น
ซึ่งจะมีการ Query ด้วยกัน 3 ครั้ง คือ
(1) นับจำนวนทั้งหมด (แบบไม่กำหนด WHERE) <= ปัจจุบันไม่ได้เอาไปแสดงผล
(2) นับจำนวนที่ค้นหาเจอ จะยอดที่แสดงในส่วนของ "จากทั้งหมด ..... รายการ"
(3) ดึงรายการทั้งหมดที่ค้นเจอ โดยสามารถกำหนดเงื่อนไขการแบ่งหน้าได้
public function read($start_row = FALSE, $per_page = FALSE)
{
$search_field = $this->session->userdata($this->session_name . '_search_field');
$value = $this->session->userdata($this->session_name . '_value');
$value = trim($value);
// ถ้ามีเงื่อนไขหลัก ให้ใส่ไว้ก่อนที่นี่
$where = "GEO_ID IN (1, 2, 3)";
$order_by = '';
if($this->order_field != ''){
$order_field = $this->order_field;
$order_sort = $this->order_sort;
$order_by = " $this->my_table.$order_field $order_sort";
}
if($search_field != '' && $value != ''){
$search_method_field = "$this->my_table.$search_field";
$search_method_value = '';
if($search_field == 'PROVINCE_NAME'){
$search_method_value = "LIKE '%$value%'"; }
$where .= ($where != '' ? ' AND ' : '') . " $search_method_field $search_method_value ";
if($order_by == ''){
$order_by = " $this->my_table.$search_field";
}
}
$this->set_table_name($this->my_table);
// (1) นับจำนวนทั้งหมด
$total_row = $this->count_record();
$search_row = $total_row;
if ($where != '') {
// (2) นับจำนวนที่ค้นหาเจอ
$this->set_where($where);
$search_row = $this->count_record();
}
$offset = $start_row;
$limit = $per_page;
$this->set_order_by($order_by);
if($offset != FALSE){
$this->set_offset($offset);
}
if($limit != FALSE){
$this->set_limit($limit);
}
$this->db->select("$this->my_table.*");
// (3) ดึงรายการทั้งหมดที่ค้นเจอ
$list_record = $this->list_record();
$data = array(
'total_row' => $total_row,
'search_row' => $search_row,
'list_data' => $list_record
);
return $data;
}
จากโค้ดด้านบนนี้อธิบายง่ายๆก็คือ ถ้ามีเงื่อนไขหลัก ที่ต้องการจำกัดการแสดงผลไว้ ให้เราเอาใส่ไว้ตั้งแต่ตอนประกาศตัวแปร $where = "";
// ถ้ามีเงื่อนไขหลัก ให้ใส่ไว้ก่อนที่นี่
$where = "GEO_ID IN (1, 2, 3)";
ในตัวอย่างก็คือการแสดงผลเฉพาะจังหวัดที่มีไอดีภาค 3 รายการที่กำหนดเท่านั้น
ผลลัพธ์ที่ได้ก็คือ จะมีรายการทั้งหมดแค่ 51 จาก 77 จังหวัด
และเมื่อเราค้นหาตัวแปร $where ก็จะเพิ่มเงื่อนไขเข้าไปตามค่า Generate ต่อไป
ผลลัพธ์ที่ได้ก็คือ จะแสดงแค่ 11 จังหวัด จากเงื่อนไขหลัก 51 จังหวัดเท่านั้น
PHP CI MANIA - PHP Code Generator
โปรแกรมช่วยสร้างโค้ด "ลดเวลาการเขียนโปรแกรม"
ความคิดเห็น
แสดงความคิดเห็น