4

I am very new to CodeIgniter, which has been very hard for me to learn so far. I mostly never work with frameworks and this is my first time.

I understand MVC but I really don't know how to create a search, even just a basic one: I just want someone to send a word in an input and search it in my database (with Ajax or not) and give the answer back. Could anyone help me with some ideas for how I should proceed? I understand that in the view I will put my divs, inputs and more, and in the controller I will call my functions that will interact with my model. I'm struggling with how to integrate them on CI though because the view is actually filled via the controller and I believe I can't use the functions of from it in the view.

Any help please?

2

3 Answers 3

18

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>
Sign up to request clarification or add additional context in comments.

Comments

0

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

<?php
class 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);
    }
}
?>

Comments

0

Model

<?php
class 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

<?php
Class 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>

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.