Autocomplete dalam codeigniter

Halo kak.. Sebelumnya terima kasih karena sudah menyediakan forum yang sangat update bagi para developer permula di Indonesia. Saya ingin bertanya. Kemarin saya membuat sebuah code autocomplete tapi ada beberapa kendala yang belum bisa saya pecahkan.

Kendalanya :

Misalkan data yang saya cari adalah JUAN JOSHUA WANGKO. Dengan autocomplete hanya dengan mengetikan JUAN JOSHUA. Data yang saya cari langsung tampil. Tapi ketika saya mencari JUAN WANGKO tanpa nama tengah data yang saya cari tidak tampil. Adakah yang bisa memberikan solusi agar semua keywordnya bisa di cari walaupun ada keyword di tengah 2 keyword yang berbeda tidak saya tuliskan.

Viewsnya :

<link rel="stylesheet" href="<?php echo base_url('assets/'); ?>dist/css/jquery-ui.css">
<script src="<?php echo base_url('assets/'); ?>js/jquery-ui.js" type="text/javascript"></script>
<script type="text/javascript">
  $(document).ready(function(){
      $('#title').autocomplete({
         source: "<?php echo site_url('dpt/get_autocomplete');?>",
         select: function (event, ui) {
             $('[name="title"]').val(ui.item.label);
             $('[name="id_dpt"]').val(ui.item.id_dpt);
             $('#nkk').html(ui.item.nkk);
             $('#nik').html(ui.item.nik);
             $('#nama_dpt').html(ui.item.nama_dpt);
             $('#nama_provinsi').html(ui.item.nama_provinsi);
             $('#nama_kabupaten').html(ui.item.nama_kabupaten);
             $('#nama_kecamatan').html(ui.item.nama_kecamatan);
             $('#nama_desa').html(ui.item.nama_desa);
             $('#lingkungan').html(ui.item.lingkungan);
             $('#jk_dpt').html(ui.item.jk_dpt);
             $('#nomortps_dpt').html(ui.item.nomortps_dpt);
         }
      });
  });
</script>
<div class="row">
   <form action="<?php echo base_url('pemilih/tambah'); ?>" method="post">
   <input type="hidden" name="id_dpt" class="form-control">
   <div class="col-md-4">
      <!-- small box -->
      <div class="small-box bg-aqua">
        <div class="inner">
          <h3><?php echo $pemilih->num_rows(); ?></h3>
          <p>Pemilih Saya</p>
        </div>
        <div class="icon">
          <i class="fa fa-users"></i>
        </div>
      </div>
      <div class="box box-solid">
         <div class="box-header with-border">
            <div class="form-group">
              <label>Cari DPT</label>
              <input type="text" name="title" class="form-control" id="title" placeholder="Nama DPT" autocomplete="off">
            </div>

Model:

	function search_dpt($nama_dpt){
		$this->db->join('provinsi','provinsi.id_provinsi=dpt.id_provinsi','left');
		$this->db->join('kabupaten','kabupaten.id_kabupaten=dpt.id_kabupaten','left');
		$this->db->join('kecamatan','kecamatan.id_kecamatan=dpt.id_kecamatan','left');
		$this->db->join('desa','desa.id_desa=dpt.id_desa','left');
		$this->db->like('dpt.nama_dpt', $nama_dpt , 'both');
		$this->db->order_by('dpt.nama_dpt', 'ASC');
		$this->db->limit(10);
		return $this->db->get('dpt');
	}

Controllernya:

	function get_autocomplete(){
		if (isset($_GET['term'])) {
		  	$result = $this->Mdpt->search_dpt($_GET['term']);
		   	if (count($result) > 0) {
		    	foreach ($result->result() as $row){
			    	$cekpem= $this->Mpemilih->cekpem($row->id_dpt);
	            if($cekpem->num_rows()<=0){
				     	$arr_result[] = array(
							'label'	=> $row->nama_dpt,
							'id_dpt'	=> $row->id_dpt,
							'nkk'	=> $row->nkk,
							'nik'	=> $row->nik,
							'nama_dpt'	=> $row->nama_dpt,
							'nama_provinsi'	=> $row->nama_provinsi,
							'nama_kabupaten'	=> $row->nama_kabupaten,
							'nama_kecamatan'	=> $row->nama_kecamatan,
							'nama_desa'	=> $row->nama_desa,
							'lingkungan'	=> $row->lingkungan,
							'jk_dpt'	=> $row->jk_dpt,
							'nomortps_dpt'	=> $row->nomortps_dpt,
						);
			   	}
			   	else{

			   	}
			   }
			   echo json_encode($arr_result);
			}
		}
	}

Mohon bantuannya kak

avatar bungtd
@bungtd

5 Kontribusi 0 Poin

Diperbarui 5 tahun yang lalu

2 Jawaban:

kalau di mysql menggunakan perintak Like memang akan melihat awal dan akhir. Kalau mau per kata, bisa diloop, pakai fungsi explode di php, untuk jadiin array, dan arraynya diloop, jadi carinya per kata.

Atau kalau mau search lebih detail bisa menggunakan elasticsearch / algolia

avatar hilmanski
@hilmanski

2670 Kontribusi 2132 Poin

Dipost 5 tahun yang lalu

ada contoh perintah like atau fungsi explode nya senior?

avatar bungtd
@bungtd

5 Kontribusi 0 Poin

Dipost 5 tahun yang lalu

Login untuk ikut Jawaban