การค้นหาในหน้าแสดงรายการ นอกจากจะใช้กล่องค้นหาที่เตรียมไว้ให้โดยเลือกฟิลด์ที่ต้องการจาก Drop-down list เรายังสามารถเพิ่มเติมช่องค้นหาได้เองโดยเขียนโค้ดเพิ่ม 3 ส่วนด้วยกัน ยกตัวอย่างเช่น
หน้าแสดงรายชื่อนักเรียน Student ในโมดูล demo จะประกอบด้วยไฟล์ดังนี้
1. แก้ไขที่ส่วนของ Views ที่ไฟล์ demo/views/student/list_view.php
ไปที่ส่วนของกล่องค้นหา แทรกโค้ดต่อไปนี้ก่อนปุ่ม "ค้นหา"
2. แก้ไขที่ส่วนของ Model ที่ไฟล์ demo/models/Student_model.php
ไปที่ฟังก์ชั่น read() และเพิ่มเติมโค้ดดังนี้
หน้าแสดงรายชื่อนักเรียน Student ในโมดูล demo จะประกอบด้วยไฟล์ดังนี้
1. แก้ไขที่ส่วนของ Views ที่ไฟล์ demo/views/student/list_view.php
ไปที่ส่วนของกล่องค้นหา แทรกโค้ดต่อไปนี้ก่อนปุ่ม "ค้นหา"
<div class="form-check form-check-inline">
<input type="radio" {check1}
name="sex" id="sex1"
value="1" class="form-check-input"
autocomplete="off" />
<label class="form-check-label" for="sex1">ชาย</label>
</div>
<div class="form-check form-check-inline">
<input type="radio" {check2}
name="sex" id="sex2"
value="2" class="form-check-input"
autocomplete="off" />
<label class="form-check-label" for="sex2">หญิง</label>
</div>
2. แก้ไขที่ส่วนของ Model ที่ไฟล์ demo/models/Student_model.php
ไปที่ฟังก์ชั่น read() และเพิ่มเติมโค้ดดังนี้
*** แก้ไขเพิ่มเติม รับค่า sex มาจาก SESSION
$sex = $this->session->userdata($this->session_name . '_sex');
3. แก้ไขที่ส่วนของ Controller ที่ไฟล์ demo/controllers/Student.php
ไปที่ฟังก์ชั่น search() และเพิ่มตัวแปรเพื่อแสดงค่าที่กำลังค้นหาปัจจุบัน
ดูคลิปตัวอย่างการแก้ไขแบบเต็มๆได้ที่ยูทูปแชนแนล PHP FAST CODING
*** แก้ไขปัญหา ไม่จำ SESSION ที่ค้นหาเมื่อเปลี่ยนหน้า ***
$sex = $this->input->post('sex', TRUE);
if($sex != ''){
$sex = $sex + 0;
$where .= ($where != '' ? ' AND ' : '') . " $this->my_table.sex = $sex "; }
3. แก้ไขที่ส่วนของ Controller ที่ไฟล์ demo/controllers/Student.php
ไปที่ฟังก์ชั่น search() และเพิ่มตัวแปรเพื่อแสดงค่าที่กำลังค้นหาปัจจุบัน
*** แก้ไขเพิ่มเติม เก็บค่า sex ใน SESSION
if (isset($_POST['submit'])) {
$search_field = $this->input->post('search_field');
$value = $this->input->post('txtSearch');
$sex = $this->input->post('sex', TRUE);
$arr = array(
$this->Student->session_name . '_search_field' => $search_field,
$this->Student->session_name . '_value' => $value,
$this->Student->session_name . '_sex' => $sex
);
$this->session->set_userdata($arr);
} else {
$search_field = $this->session->userdata($this->Student->session_name . '_search_field');
$value = $this->session->userdata($this->Student->session_name . '_value');
$sex = $this->session->userdata($this->Student->session_name . '_sex');
}
$sex = $this->input->post('sex', TRUE);
$check1 = '';
$check2 = '';
if($sex == 1){
$check1 = 'checked="checked"';
}else if($sex == 2){
$check2 = 'checked="checked"';
}
$this->data['check1'] = $check1;
$this->data['check2'] = $check2;
ดูคลิปตัวอย่างการแก้ไขแบบเต็มๆได้ที่ยูทูปแชนแนล PHP FAST CODING
*** แก้ไขปัญหา ไม่จำ SESSION ที่ค้นหาเมื่อเปลี่ยนหน้า ***
PHP CI MANIA - PHP Code Generator
โปรแกรมช่วยสร้างโค้ด "ลดเวลาการเขียนโปรแกรม"
ความคิดเห็น
แสดงความคิดเห็น