Seri #11 – Tutorial Belajar Framework CodeIgniter untuk Pemula | Pencarian Data


Seri #11 – Tutorial Belajar Framework CodeIgniter untuk Pemula | Pencarian Data – Tutorial terakhir pada seri belajar framework codeigniter ialah pencarian data. Pada halaman utama, kita telah berhasil menampilkan daftar mahasiswa, nah disini kita akan menyiapkan sebuah field untuk mencari data, sehingga daftar mahasiswa dapat difilter berdasarkan keyword yang kita masukkan.

Daftar Mahasiswa

Kita tidak akan membuat view baru, tetapi hanya akan melakukan modifikasi pada file view daftar_mahasiswa.php dengan menambahkan field pencarian diantara tulisan Daftar Mahasiswa dan tabel.

View

Silakan teman-teman buka view bernama daftar_mahasiswa.php dan lakukan modifikasi dengan menambahkan sintaks pada baris 16 – 20 berikut:

<!DOCTYPE html>
<html>
<head>
	<title>Daftar Mahasiswa | Kangriyanto.net</title>
	<style type="text/css">
		.container { width: 800px; margin: 10px auto; }
		table {	width: 100%; }
		table tr:first-child { background: #d0d0d0;	}
		table td { border: 1px solid #d0d0d0; }
	</style>
</head>
<body>
	<div class="container">
		<h1>Daftar Mahasiswa</h1>

		<?php 
		echo form_open('mahasiswa');
		echo form_input(['type' => 'text', 'name' => 'keyword', 'placeholder' => 'Masukkan keyword']);
		echo form_submit('submit', 'Cari Data');
		?>

		<table>
			<tr>
				<th>No</th>
				<th>NIM</th>
				<th>Nama Mahasiswa</th>
				<th>Jenis Kelamin</th>
				<th>Alamat</th>
				<th>Aksi</th>
			</tr>

			<?php $no = 1;
				foreach($mahasiswa as $data): ?>
				<tr>
					<td><?php echo $no++; ?></td>
					<td><?php echo $data['nim']; ?></td>
					<td><?php echo $data['nama']; ?></td>
					<td><?php echo ($data['jk'] == 'L') ? 'Laki-laki' : 'Perempuan'; ?></td>
					<td><?php echo $data['alamat']; ?></td>
					<td align="center">
						<a href="<?php echo site_url('mahasiswa/edit/' . $data['nim']) ?>">Edit</a> | 
						<a href="<?php echo site_url('mahasiswa/hapus/' . $data['nim']) ?>" onclick="return confirm('Yakin ingin menghapus data ini?')">Hapus</a>
					</td>
				</tr>
			<?php endforeach; ?>
			<tr>
				<td colspan="6" align="center">
					<a href="<?php echo site_url('mahasiswa/tambah') ?>">Tambah Data</a>
				</td>
			</tr>
		</table>
		
	</div>
</body>
</html>

Apabila dijalankan maka akan menampilkan error sebab kita belum memanggil helper bernama form sedangkan pada view di atas kita telah menggunakannya. Untuk itu kita akan memodifikasi pada file controller.

Controller

Pada controller Mahasiswa kita akan lakukan modifikasi pada method index agar dapat memanggil helper form sehingga menjadi seperti ini:

public function index()
{
	$this->load->database();
	$this->load->model('mahasiswa_model');
	$this->load->helper('form');

	$data['mahasiswa'] = $this->mahasiswa_model->get_mahasiswa();
	$this->load->view('daftar_mahasiswa', $data);
}

Ok, sekarang apabila diakses menggunakan alamat localhost/belajarci/index.php/mahasiswa maka akan tampil halaman seperti pada gambar berikut (perhatikan field pencarian):

View Daftar Mahasiswa Telah Berhasil Dimodifikasi

Jika kita lakukan pencarian data, maka field tersebut masih belum berfungsi. Kita akan membuatnya berfungsi dengan memodifikasi method index pada controller Mahasiswa di atas dengan baris berikut:

public function index()
{
	$this->load->database();
	$this->load->model('mahasiswa_model');
	$this->load->helper('form');

	if($this->input->method() == 'post') {
		$keyword = $this->input->post('keyword');
		$data['mahasiswa'] = $this->mahasiswa_model->cari_mahasiswa($keyword);
	}
	else {
		$data['mahasiswa'] = $this->mahasiswa_model->get_mahasiswa();
	}
	$this->load->view('daftar_mahasiswa', $data);
}

Pada method di atas, jika dilakukan pencarian data maka panggil method cari_mahasiswa pada mahasiswa_model, tetapi jika tidak dilakukan pencarian maka panggil method get_mahasiswa

Secara keseluruhan controller Mahasiswa akan menjadi seperti ini:

<?php 

class Mahasiswa extends CI_Controller {

	public function index()
	{
		$this->load->database();
		$this->load->model('mahasiswa_model');
		$this->load->helper('form');

		if($this->input->method() == 'post') {
			$keyword = $this->input->post('keyword');
			$data['mahasiswa'] = $this->mahasiswa_model->cari_mahasiswa($keyword);
		}
		else {
			$data['mahasiswa'] = $this->mahasiswa_model->get_mahasiswa();
		}
		$this->load->view('daftar_mahasiswa', $data);
	}


	public function hapus($nim)
	{
		$this->load->database();
		$this->load->model('mahasiswa_model');
		$hapus = $this->mahasiswa_model->delete_mahasiswa($nim);

		if($hapus) {
			redirect(site_url('mahasiswa'));
		}
	}
	

	public function tambah()
	{
		if($this->input->method() == 'post') {

			$this->load->database();
			$this->load->model('mahasiswa_model');
			
			$data = [
				'nim'		=> $this->input->post('nim'),
				'nama'		=> $this->input->post('nama'),
				'jk'		=> $this->input->post('jk'),
				'alamat'	=> $this->input->post('alamat')
			];

			if($this->mahasiswa_model->add_mahasiswa($data)) {
				redirect(site_url('mahasiswa'));
			}
		}
		else {
			$this->load->helper('form');
			$this->load->view('tambah_mahasiswa');
		}
	}


	public function edit($nim)
	{
		$this->load->database();
		$this->load->helper('form');
		$this->load->model('mahasiswa_model');

		// ambil satu data dari tabel mahasiswa beradasarkan nim
		$data = $this->mahasiswa_model->get_mahasiswa($nim);
		$this->load->view('edit_mahasiswa', $data);

		// jika user menekan tombol edit data, maka lakukan update
		if($this->input->method() == 'post') {
			$data = [
				'nama'		=> $this->input->post('nama'),
				'jk'		=> $this->input->post('jk'),
				'alamat'	=> $this->input->post('alamat')
			];
			if($this->mahasiswa_model->update_mahasiswa($data, $nim)) {
				redirect('mahasiswa');
			}
		}
	}
}

Selanjutnya kita akan memodifikasi model Mahasiswa_model dan membuatkan satu method bernama cari_mahasiswa.

Model

Buka model Mahasiswa_model dan tambahkan method cari_mahasiswa:

public function cari_mahasiswa($keyword)
{
	$this->db->like('nim', $keyword);
	$this->db->or_like('nama', $keyword);
	return $this->db->get('mahasiswa')->result_array();
}

Query builder di atas akan menghasilkan query:

SELECT * FROM `mahasiswa` WHERE `nim` LIKE '%$keyword%' OR `nama` LIKE '%$keyword%'

Sehingga model Mahasiswa_model secara keseluruhan akan menjadi seperti ini:

<?php 

class Mahasiswa_model extends CI_Model {
	
	public function get_mahasiswa($nim = false)
	{
		if($nim === false) {
			$query = $this->db->get('mahasiswa');
			return $query->result_array();
		}
		else {
			$this->db->where(['nim' => $nim]);
			$query = $this->db->get('mahasiswa');
			return $query->row();
		}
	}


	public function delete_mahasiswa($nim)
	{
		return $this->db->delete('mahasiswa', ['nim' => $nim]);
	}


	public function add_mahasiswa($data)
	{
		return $this->db->insert('mahasiswa', $data);
	}


	public function update_mahasiswa($data, $nim)
	{
		return $this->db->update('mahasiswa', $data, "nim = $nim");
	}


	public function cari_mahasiswa($keyword)
	{
		$this->db->like('nim', $keyword);
		$this->db->or_like('nama', $keyword);
		return $this->db->get('mahasiswa')->result_array();
	}
}

Oke, sampai disini pembahasan tentang pencarian data dengan menggunakan framework CodeIgniter (CI) telah selesai. Silakan teman-teman buka kembali localhost/belajarci/index.php/mahasiswa dan lakukan pencarian dengan keyword tertentu. Disini saya contohkan melakukan pencarian daftar mahasiswa dengan keyword di, maka akan ditampilkan data mahasiswa seperti Aras Harmadinata, Dika Luthfi M dan Dicky Wahyudi.

Menampilkan Daftar Mahasiswa Berdasarkan Keyword “di”

Tinggalkan Komentar

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.