Categorized | Artikel

Membuat fasilitas Searching dengan paging di Codeigniter

Posted on 27 July 2010

pertama-tama yang harus dilakukan adalah membuat model bos.  Model yang saya buat diberi nama msearch.php

class Msearch extends Model{

function Msearch(){

parent::Model();

}

function doSearch($search, $limit, $offset){

if ($offset == “”){

$offset=0;

}

$Q = $this->db->query(“select * from artikel a, artikel_kategori b where (a.status = 1 AND a.id_kategori = b.id_kategori) AND( a.judul LIKE ‘%$search%’ OR a.isi LIKE ‘%$search%’) ORDER BY id_artikel DESC  LIMIT $offset, $limit” );

if ( $Q->num_rows > 0){

$result = $Q->result_array();

foreach(array_keys($result) as  $key){

$result[$key]['comment_count'] = $this->db->where(‘id_artikel’,$result[$key]['id_artikel'])->from(‘artikel_komentar’)->count_all_results();

}

$Q->free_result();

return $result;

}

}

function hitSearch($search){

$Q = $this->db->query(“select * from artikel a, artikel_kategori b where (a.status = 1 AND a.id_kategori = b.id_kategori) AND( a.judul LIKE ‘%$search%’ OR a.isi LIKE ‘%$search%’)  ” );

if ( $Q->num_rows > 0){

$data = $Q->num_rows;

$Q->free_result();

return $data;

}

}

}

selanjutnya tinggal bikin deh Controllernya..

<?php

class Search extends Controller{

function Search()

{

parent::Controller();

session_start();

}

function index(){

$search = $this->input->post(‘search’);

if($search !=”){

$_SESSION['search'] = $search;

redirect(‘search/result’);

}

if($search ==” ){

redirect(‘main’,'refresh’);

}

}

function result()

{

$totalrow = $this->Msearch->hitSearch($_SESSION['search'] );

$data['title'] = “Hasil Pencarian untuk “.$_SESSION['search'].” sebanyak “. $totalrow  ;

$config['base_url'] = base_url().’search/result/’;

$config['total_rows'] = $totalrow;

$config['per_page'] = ’2′;

$config['next_link'] = ‘next ›’;

$config['prev_link'] = ‘‹ prev’;

$config['next_link'] = ‘next ›’;

$config['prev_link'] = ‘‹ prev’;

$this->pagination->initialize($config);

if($data['result'] =  $this->Msearch->doSearch($_SESSION['search']  ,$config['per_page'],$this->uri->segment(3))){

$data['message'] = “Hasil pencarian untuk keyword<b> “”. $_SESSION['search'].”"</b> “;

$data['result'] =  $this->Msearch->doSearch($_SESSION['search']  ,$config['per_page'],$this->uri->segment(3));

$data['main'] = ‘public/public_search’;

}else{

$data['no_result'] = “Maaf pencarian untuk <b>”.$_SESSION['search']  .”</b> tidak ditemukan”;

$data['main'] = ‘public/public_no_result’;

}

$data['paging']  = $this->pagination->create_links(); //untuk pagging

$this->load->view(‘public/front’,$data);

}

}

untuk manampilkannya di view seperti di bawah ini

<p><?=$message;?></p>

<?if (count($result)){ ?>

<?php foreach($result as $key=> $row){ ?>

<h2><a href=”<?=base_url()?>artikel/detail/<?=$row['id_artikel']?>/<?=url_title($row['judul']);?>”><?=$row['judul'] ?></a></h2>

<div class=”tgl”>By : <?=$row['penulis']; ?> |  <?$fdate = “%d %M %Y”; echo mdate($fdate, mysql_to_unix($row['tgl'])); ?> | dibaca <?=$row['hit']?> kali | komentar <?=$row['comment_count']?> | <?=$row['kategori'];?></div>

<? $row['isi'] = preg_replace(“/<img.+?>/”, “”, $row['isi']);?>

<p><?=word_limiter($row['isi'],50)?> </p>

<p>        <? echo $this->session->flashdata(‘warning’);?></p>

<?} }?>

<center><?=$paging?></center>

Leave a Reply

You must be logged in to post a comment.