Cara Membuat Pencarian Tanpa Refresh Halaman dengan Codeigniter

img-responsive
Di sela-sela kesibukan saya. Saya coba sempatkan buat update catatan/tutorial pada blog saya ini. Pembahasan kali ini adalah mengenai pencarian. Pencarian merupakan fitur paling penting dan hampir di semua aplikasi berbasis web atau desktop pasti memiliki fitur ini. Maka dari itu, saya akan bahas soal ini. Pencarian yang kita buat bukan pencarian sederhana yang ketika klik tombol cari halaman web tersebut akan memuat ulang (refresh/reload). Tapi pencarian yang kita buat adalah pencarian yang ketika proses tidak akan me-refresh/me-reload halaman web tersebut. Jadi kelihatan lebih dinamis. Tentunya bisa seperti itu karena bantuan Jquery Ajax. Ajax ini lah yang membuat kita bisa melakukan pengiriman data ke file php tanpa harus reload/refresh halaman. Pada catatan ini kita akan membuatnya dengan Framework Codeigniter 3 (versi 3) dan Database MySQL.

DEMOSebelum membaca tutorialnya, mungkin ada yang ingin melihat demonya terlebih dahulu. Silahkan klik link berikut untuk melihat demonya : Lihat Demo.

STEP 1 – PERSIAPAN
  1. Buat sebuah folder dengan nama search_ajax_ci lalu simpan pada folder xampp/htdocs/
  2. Buat sebuah folder dengan nama js, lalu simpan pada folder xampp/htdocs/search_ajax_ci/.
  3. Download plugin JQUERY, klik link berikut : Download.
    Bingung cara downloadnya? klik disini untuk melihat caranya.
  4. Copy and paste file jquery.min.js yang telah di download tadi ke dalam folder xampp/htdocs/search_ajax_ci/js/.
  5. Download Framework Codeigniter, klik link berikut : download.
    Bingung cara downloadnya? klik disini untuk melihat caranya.
  6. Copy and paste file codeigniter_v3.7z yang telah di download tadi ke folder xampp/htdocs/search_ajax_ci/.
  7. Ekstrak file codeigniter_v3.7z nya.

STEP 2 – DATABASE
Pada step ini, kita akan membuat databasenya. ikuti langkah-langkah berikut ini :
  1. Buat sebuah database dengan nama mynotescode
  2. Buat sebuah tabel dengan nama siswa. Struktur tabelnya sebagai berikut :
    Tabel - Cara Membuat Pencarian Data dan Menampilkannya ke Textbox dengan Codeigniter
    1. CREATE TABLE IF NOT EXISTS `siswa` (
    2. `nis` varchar(11) NOT NULL,
    3. `nama` varchar(50) NOT NULL,
    4. `jenis_kelamin` varchar(10) NOT NULL,
    5. `telp` varchar(15) NOT NULL,
    6. `alamat` text NOT NULL,
    7. PRIMARY KEY (`nis`)
    8. ) ENGINE=InnoDB DEFAULT CHARSET=latin1

STEP 3 – KONFIGURASIKarena dibuat dengan Codeigniter, pertama kita harus melakukan konfigurasi terlebih dahulu pada framework codeigniternya.
  1. Buka folder xampp/htdocs/search_ajax_ci/application/config/
  2. Buka file config.php
    Cari kode berikut $config['base_url'] = '';Ubah kode tersebut jadi seperti ini :
    1. $config['base_url'] = 'http://localhost/search_ajax_ci/';
    Kode diatas digunakan untuk menset baseurlnya.
    Lalu simpan file tersebut.
  3. Buka file autoload.php
    Cari kode berikut ini :
    1. $autoload['libraries'] = array();
    2. $autoload['helper'] = array();
    Ubah jadi seperti ini :
    1. $autoload['libraries'] = array('database');
    2. $autoload['helper'] = array('url');
    Kode diatas digunakan untuk memuat (menload) class database dan url.
    Lalu simpan file tersebut.
  4. Buka file routes.php
    Cari kode berikut ini :
    1. $route['default_controller'] = 'welcome';
    Ubah jadi seperti ini :
    1. $route['default_controller'] = 'siswa';
    Kode diatas digunakan untuk menset controller mana yang akan diload pertama kali. Secara default, Codeigniter telah menset default controller yaitu welcome. Disini kita set default controller menjadi siswa.
    Lalu simpan file tersebut.
  5. Buka file database.php
    Cari kode berikut ini :
    1. 'hostname' => 'localhost',
    2. 'username' => '',
    3. 'password' => '',
    4. 'database' => '',
    Ubah jadi seperti ini :
    1. 'hostname' => 'localhost', // Nama host
    2. 'username' => 'root', // Username
    3. 'password' => '', // Jika menggunakan password isi, jika tidak kosongkan saja
    4. 'database' => 'mynotescode', // Nama databasenya
    Kode diatas digunakan untuk koneksi ke database.
    Lalu simpan file tersebut.

STEP 4 – BUAT MODELLangkah selanjutnya adalah membuat modelnya. Buat sebuah file dengan nama SiswaModel.php, Lalu simpan pada folder xampp/htdocs/search_ajax_ci/application/models/. Berikut kodenya :
  1. <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
  2. class SiswaModel extends CI_Model {
  3. public function view(){
  4. return $this->db->get('siswa')->result(); // Tampilkan semua data yang ada di tabel siswa
  5. }
  6. public function search($keyword){
  7. $this->db->like('nis', $keyword);
  8. $this->db->or_like('nama', $keyword);
  9. $this->db->or_like('jenis_kelamin', $keyword);
  10. $this->db->or_like('telp', $keyword);
  11. $this->db->or_like('alamat', $keyword);
  12. $result = $this->db->get('siswa')->result(); // Tampilkan data siswa berdasarkan keyword
  13. return $result;
  14. }
  15. }
Pada kode diatas, kita membuat sebuah fungsi view(). dimana didalamnya terdapat kode return $this->db->get(‘siswa’)->result(). Kode tersebut berfungsi untuk menampilkan semua data pada tabel siswa. Struktur dasar penulisannya seperti ini : return $this->db->get(‘nama_tabel‘)->result(). Lalu pada kode diatas juga ada kode return, kode tersebut digunakan untuk mengeluarkan hasil dari sebuah fungsi. Pada kasus diatas, hasil yang dikeluarkan oleh return yaitu data-data siswa.
Fungsi search() ini berfungsi untuk melakukan query menampilkan data siswa berdasarkan keyword yang di ketik oleh user pada textbox pencarian. Pada fungsi ini terdapat kode $this->db->like()$this->db->or_like(). Jika kita buat query sql nya langsung, kurang lebih fungsi tersebut akan mengeksekusi query seperti berikut :
  1. SELECT * FROM siswa WHERE nis LIKE '$keyword' OR nama LIKE '$keyword' OR jenis_kelamin LIKE '$keyword' OR telp LIKE '$keyword' OR alamat LIKE '$keyword'

STEP 5 – BUAT CONTROLLER
Pada tahap ini, kita akan membuat controllernya. Buat sebuah file dengan nama Siswa.php, lalu simpan pada folder xampp/htdocs/search_ajax_ci/application/controllers/. Berikut ini kodenya :
  1. <?php
  2. defined('BASEPATH') OR exit('No direct script access allowed');
  3. class Siswa extends CI_Controller {
  4. public function __construct(){
  5. parent::__construct();
  6. $this->load->model('SiswaModel');
  7. }
  8. public function index(){
  9. $data['siswa'] = $this->SiswaModel->view();
  10. $this->load->view('index', $data);
  11. }
  12. public function search(){
  13. // Ambil data NIS yang dikirim via ajax post
  14. $keyword = $this->input->post('keyword');
  15. $siswa = $this->SiswaModel->search($keyword);
  16. // Kita load file view.php sambil mengirim data siswa hasil query function search di SiswaModel
  17. $hasil = $this->load->view('view', array('siswa'=>$siswa), true);
  18. // Buat sebuah array
  19. $callback = array(
  20. 'hasil' => $hasil, // Set array hasil dengan isi dari view.php yang diload tadi
  21. );
  22. echo json_encode($callback); // konversi varibael $callback menjadi JSON
  23. }
  24. }
public function __construct(){, fungsi ini berfungsi untuk menjalankan suatu aksi ketika controller main diload. Didalam fungsi ini, terdapat kode $this->load->model(‘SiswaModel’);, kode tersebut berfungsi untuk memuat (meload) model siswa (yang pada step sebelumnya kita buat) agar kita bisa mengakses fungsi-fungsi yang ada didalam model tersebut.
public function index(). Dalam fungsi ini ada kode $data[‘siswa’] = $this->SiswaModel->view();, kode tersebut digunakan untuk mengambil hasil query sql dari fungsi view() yang ada pada model siswa (SiswaModel.php) lalu memasukannya ke dalam array data dengan index siswa ($data[‘siswa’]). Pada fungsi index() ini juga, terdapat kode $this->load->view(‘view’, $data);. Kode tersebut berfungsi untuk memuat (meload) file view.php (file ini akan kita buat pada step selanjutnya) dan mengirimkan array data ($data) tadi ke file tersebut.
public function search() berfungsi untuk memanggil fungsi search() yang ada di SiswaModel. Fungsi search() tersebut untuk melakukan query ke database untuk mencari data siswa berdasarkan nis / nama / jennis kelamin / telelpon / alamat (sesuai yang diinput oleh user di textbox pencarian).

STEP 6 – VIEWLangkah selanjutnya adalah membuat file view untuk menampilkan interface / antarmukanya. Buat sebuah file dengan nama index.php, lalu simpan pada folder xampp/htdocs/search_ajax_ci/application/views/. Berikut tampilan dan kodenya :
View - Cara Membuat Pencarian Tanpa Refresh Halaman dengan Codeigniter
  1. <html>
  2. <head>
  3. <title>Search with Ajax CI</title>
  4. <script>
  5. var baseurl = "<?php echo base_url("index.php/"); ?>"; // Buat variabel baseurl untuk nanti di akses pada file config.js
  6. </script>
  7. <script src="<?php echo base_url("js/jquery.min.js"); ?>"></script> <!-- Load library jquery -->
  8. <script src="<?php echo base_url("js/config.js"); ?>"></script> <!-- Load file process.js -->
  9. </head>
  10. <body>
  11. <h1>Data SISWA</h1><hr>
  12. <input type="text" id="keyword">
  13. <button type="button" id="btn-search">Search</button>
  14. <a href="<?php echo base_url(); ?>">Reset</a>
  15. <br>
  16. <div id="view">
  17. <?php $this->load->view('view', array('siswa'=>$siswa)); // Load file view.php dan kirim data siswanya ?>
  18. </div>
  19. </body>
  20. </html>
Pada kode diatas, kita menyisipkan kode $this->load->view(‘view’, array(‘siswa’=>$siswa));, kode tersebut berguna untuk me-load file view.php sebagai kondisi awal saat kita membuka web ini. Kita tampilkan dulu semua data siswanya.
Lalu kita buat file view nya, buat sebuah file dengan nama view.php, lalu simpan pada folder xampp/htdocs/search_ajax_ci/application/views/. Berikut ini kodenya :
  1. <table border="1" cellpadding="8">
  2. <tr>
  3. <th>NIS</th>
  4. <th>Nama</th>
  5. <th>Jenis Kelamin</th>
  6. <th>Telepon</th>
  7. <th>Alamat</th>
  8. </tr>
  9. <?php
  10. if( ! empty($siswa)){ // Jika data pada database tidak sama dengan empty (alias ada datanya)
  11. foreach($siswa as $data){ // Lakukan looping pada variabel siswa dari controller
  12. echo "<tr>";
  13. echo "<td>".$data->nis."</td>";
  14. echo "<td>".$data->nama."</td>";
  15. echo "<td>".$data->jenis_kelamin."</td>";
  16. echo "<td>".$data->telp."</td>";
  17. echo "<td>".$data->alamat."</td>";
  18. echo "</tr>";
  19. }
  20. }else{ // Jika data tidak ada
  21. echo "<tr><td colspan='4'>Data tidak ada</td></tr>";
  22. }
  23. ?>
  24. </table>
Pada kode diatas terdapat kode foreach($siswa as $data){, kode tersebut akan manampilkan satu per satu data siswa sampai data siswa yang terakhir.
echo “<td>”.$data->nis.”</td>”;
echo “<td>”.$data->nama.”</td>”;
echo “<td>”.$data->jenis_kelamin.” </td>”;
echo “<td>”.$data->telp.” </td>”;

echo “<td>”.$data->alamat.”</td>”;
Pada kode diatas, yang saya beri tanda merah. Itu harus sama dengan nama kolom / field yang ada di database tabel siswa.

STEP 7 – AJAXLangkah terakhir adalah membuat kode ajax nya. Buat sebuah file dengan nama config.js, lalu simpan pada folder xampp/htdocs/search_ajax_ci/js/. Berikut ini kodenya :
  1. $(document).ready(function(){
  2. $("#btn-search").click(function(){ // Ketika tombol simpan di klik
  3. // Ubah text tombol search menjadi SEARCHING...
  4. // Dan tambahkan atribut disable pada tombol nya agar tidak bisa diklik lagi
  5. $(this).html("SEARCHING...").attr("disabled", "disabled");
  6. $.ajax({
  7. url: baseurl + 'siswa/search', // File tujuan
  8. type: 'POST', // Tentukan type nya POST atau GET
  9. data: {keyword: $("#keyword").val()}, // Set data yang akan dikirim
  10. dataType: "json",
  11. beforeSend: function(e) {
  12. if(e && e.overrideMimeType) {
  13. e.overrideMimeType("application/json;charset=UTF-8");
  14. }
  15. },
  16. success: function(response){ // Ketika proses pengiriman berhasil
  17. // Ubah kembali text button search menjadi SEARCH
  18. // Dan hapus atribut disabled untuk meng-enable kembali button search nya
  19. $("#btn-search").html("SEARCH").removeAttr("disabled");
  20. // Ganti isi dari div view dengan view yang diambil dari controller siswa function search
  21. $("#view").html(response.hasil);
  22. },
  23. error: function (xhr, ajaxOptions, thrownError) { // Ketika terjadi error
  24. alert(xhr.responseText); // munculkan alert
  25. }
  26. });
  27. });
  28. });
Untuk kode ini sebagian besar sudah saya jelaskan dengan komentar di masing-masing kode.

Mungkin sekian untuk catatan kali ini. Semoga bisa bermanfaat. Jika ada yang kurang dipahami, langsung tanyakan pada form komentar dibawah ini. Jangan lupa LIKE dan SHARE nya, Terimakasih banyak.
Happy Coding ^_^

SOURCE CODEUntuk mengunduh source code nya, klik link berikut ini : Download.
Bingung cara downloadnya? klik disini untuk melihat caranya.

SUMBER & REFERENSIDokumentasi Codeigniter : https://www.codeigniter.com/user_guide
Tutorial membuat pencarian tanpa refresh halaman dengan codeigniter dan jquery ajax, Tutoria membuat pencarian tanpa reload halaman dengan codeigniter dan jquery ajax, cara mudah membuat pencarian tanpa harus refresh halaman dengan codeigniter mysql dan jquery ajax.

Pencarian

Komentar

Postingan populer dari blog ini

Login, Session, dan Logout

Cara Membuat File Setup / Installer Aplikasi Sendiri dengan Inno Setup Compiler