how to create MVC for search in Codeigniter? how to create MVC for search in Codeigniter? codeigniter codeigniter

how to create MVC for search in Codeigniter?


Start by creating a controller that will be handling the search requests and displaying the search page, followed by the search-term passed to the model for database lookup (and sending it back to the controller). The controller will pass it to the view.

A little example;

The Controller

class Search extends CI_Controller {    public function __construct()    {        parent::__construct();        $this->load->helper('form');        $this->load->model('search_model');    }    public function index()    {        $this->load->view('search_form');    }    public function execute_search()    {        // Retrieve the posted search term.        $search_term = $this->input->post('search');        // Use a model to retrieve the results.        $data['results'] = $this->search_model->get_results($search_term);        // Pass the results to the view.        $this->load->view('search_results',$data);    }}

The Model

class Search_model extends CI_Model {    public function get_results($search_term='default')    {        // Use the Active Record class for safer queries.        $this->db->select('*');        $this->db->from('members');        $this->db->like('username',$search_term);        // Execute the query.        $query = $this->db->get();        // Return the results.        return $query->result_array();    }}

The view for displaying the search form

<?php    echo form_open('search/execute_search');    echo form_input(array('name'=>'search'));    echo form_submit('search_submit','Submit');?>

The View for displaying results

<div>    <?php        // List up all results.        foreach ($results as $val)        {            echo $val['username'];        }    ?></div>


In CodeIgniter, most likely you will use post method instead of get.So, in the search form, make sure that you are using post method.

for example

View:

<form action="<?=site_url('search_controller/search_function_in_controller')?>" method="post">  search: <input type="text" name="keyword" />  <input type="submit" value="Submit" /></form> 

Controller

<?phpclass Search_controller extends CI_Controller {    public function search_function_in_controller()    {            $keyword = $_POST['keyword']; // you can also use $this->input->post('keyword');            $this->load->model('Search_model');            $data['search_result'] = $this->search_model->search_user($keyword);            $this->load->view('search_result', $data);    }}?>


Model

<?phpclass Searchmodel extends CI_Model{    public function __construct() {        parent::__construct();    }    function search($keyword)    {        $this->db->like('first_name',$keyword);        $query  =   $this->db->get('user');        return $query->result_array();    }}?>

Controller

<?phpClass Search extends CI_Controller{    public function __construct() {        parent::__construct();        $this->load->model('searchmodel');    }    function search_keyword()    {        $keyword=$this->input->post('submit');        $data['users']=$this->searchmodel->search($keyword);        $this->load->view('user/view', $data);    }}?>

View

<form class="form-inline" role="form" action="<?php echo site_url().'/search/search_keyword';?>" method="post">    <div class="form-group">        <input type="text" class="form-control" name="search" placeholder="Search by firstname">    </div>    <button type="submit" class="btn btn-info" name="submit" >Search</button></form>