sameed ul hassan
sameed ul hassan

Reputation: 115

Codeigniter-passing value from controller to model

My English is not good so sorry for any mistake. I'm new to Codeigniter, I am trying to search record by using this code, this is my controller code:

public function search() {
    if(isset($_POST['search']))
    {
        $s = $_POST['search'];
        $this->db->select('u_id,name,email,phone');
        $this->db->from('user');
        $this->db->where('name =' ,"{$s}" );
        $query = $this->db->get();
        $res = $query->result();

        $data['user'] = null ;
        if($res)
        {
            $data['user'] = $res ;              
        }

        $this->load->view('filter' , $data);              
    }
}

It is working fine but I want to write this code in separate Model.

$this->db->select('u_id,name,email,phone');
$this->db->from('user');
$this->db->where('name =' ,"{$s}" );
$query = $this->db->get();
$res = $query->result();

But i don't know how to pass this variable value $s = $_POST['search']; to my model. Any suggestion?

Upvotes: 0

Views: 1114

Answers (3)

always-a-learner
always-a-learner

Reputation: 3794

Controller

public function search() {
    $search = $this->input->post('search');
    $this->load->model('your_model'); //<-- You can load the model into "__construct"

    $search_result = $this->your_model->your_search_function($search); //<-- This is how you can pass a variable to the model from controller

    $this->load->view('your_view',['search_result'=>$search_result]); //<-- This is how you can load the data to the view. Hear your search result array is loaded on your view

}

Model

public function your_search_function($search) {

//You will receive this search variable ^^ here in your model

    $this->db->select('u_id,name,email,phone');
    $this->db->from('user');
    $this->db->where('name',$search);
    $query = $this->db->get();
    $result = $query->result_array();

    if(isset($result) && !empty($result))
    {
        return $result;
    } else 
    {
        return FALSE;
    }

}

Upvotes: 0

Atural
Atural

Reputation: 5439

you can try the following

//in your application/models Folder put a File called UserSearch_Model.php

class UserSearch_Model extends CI_Model
{
    public function search($strSearch)
    {
        $query = $this->db
            ->select('u_id,name,email,phone')
            ->from('user')
            ->where('name' ,$s)
            ->get();
        return $query->result();
    }
}


//and in your controller

public function search() 
{
    $strSearch = $this->input->post('search');
    if (!empty($strSearch))
    {
        $data = [];
        $this->load->model("UserSearch_Model");
        $data['user'] = $this->UserSearch_Model->search($strSearch);

        if (is_array($data['user']) && count($data['user']) > 0)
        {
            $this->load->view('filter' , $data);

        }
    }
}

Upvotes: 1

NikuNj Rathod
NikuNj Rathod

Reputation: 1658

You can try this solution for your problem :

public function search() {
    $search_value = $this->input->post('search'));
    $this->db->select('u_id,name,email,phone');
    $this->db->from('user');
    if (isset($search_value) && !empty($search_value)) {
        $this->db->where('name',$search_value);
        // OR
        $this->db->like('name', $search_value);
    }
    $query = $this->db->get();
    $res = $query->result();
    $data['user'] = null;
    if ($res) {
        $data['user'] = $res;
    }
    $this->load->view('filter', $data);
}

I hope it will help.

Upvotes: 0

Related Questions