Codeigniter搜索与分页

时间:2012-04-08 11:21:23

标签: php jquery ajax

我用分页实现了搜索。 控制器功能`公共功能搜索()     {

    if($_POST)
    {
        $search_name=$this->input->post('search_name');
        $config['base_url'] = 'search';
        $config['total_rows'] = 15;//$this->registration_model->record_count();
        $config['per_page'] = 4;
        $config["uri_segment"] = 3;
        $config['use_page_numbers'] = TRUE;
        $this->pagination->initialize($config);
        $page = ($this->uri->segment(3)) ? $this->uri->segment(3) : 0;
        $data['result']=$this->institute_model->search_result($config["per_page"],$page,$search_name);
        $data['links'] = $this->pagination->create_links();
        $this->load->view('institute/search',$data);
    }
}`

模型功能代码是

public function search_result($limit,$start,$search_name)
{
    $this->db->limit($limit, $start);
    $this->db->select('user_id');
    $this->db->where('category',1);
    $this->db->like('first_name',$search_name);
    $query = $this->db->get('registration');
    if ($query->num_rows() > 0) {

        foreach ($query->result() as $row) {

            $data[] = $row;

        }

        return $data;

    }

    return false;




}

我正在从具有userid和fname等的注册表中搜索。搜索基于用户名。它对我有用但是当我点击第2页的分页时,它会转到http://localhost/mypro/index.php/institute/search/2并变为空白。

1 个答案:

答案 0 :(得分:0)

使用插件Jquery Pagintation

在加载视图之前添加jquery。

//Define model function with limit
public function modelFunction($limit=0)
    {
        $this->db->select("....col_name....");
            //....................
            //.........
        $this->db->limit(10,$limit)->order_by('id', 'desc');
        return $this->db->get()->result_array();

    }



//Define controller function with limit
function controllerFunction($limit = 0)
    {
        $config['base_url'] = path_to_controllerFunction
        $config['total_rows'] = call_to_total_count_function;
        $config['per_page'] = 10;
        $data["total"] = call_to_total_count_function;
        $config['use_page_numbers'] = TRUE;
        $data["per_page"] = 10;
        $config['full_tag_open'] = "<div class = 'pagination'>";
        $config['full_tag_close'] = "</div>";
        //$config['additional_param']  = 'serialize_form()';
        $config['div'] = '#div_to_load_result'; /* Here #content is the CSS selector for target DIV */
        //$config['js_rebind'] = "alert('it works !!'); "; /* if you want to bind extra js code */
        $this->load->library('table');
        $this->jquery_pagination->initialize($config);
        $html  =  $this->jquery_pagination->create_links();
        $html .= '<br>';
        //$this->table->function = 'htmlspecialchars';
        //$this->table->set_heading('Delivery','image','time','delivery','old');
        $html .= $this->table->generate($this->modelname->modelFunction( $limit ));

        echo $html;
    }


        // first time loading result in controller
function index()
    {
        $config['base_url'] = controllerFunction
        $config['total_rows'] = total_number_of_result;
        $config['per_page'] = 10;
        $data["total"] = total_number_of_result
        $data["per_page"] = 10;
        $config['use_page_numbers'] = TRUE;
        $config['full_tag_open'] = "<div class = 'pagination'>";
        $config['full_tag_close'] = "</div>";
        //$config['additional_param']  = 'serialize_form()';
        $config['div'] = '#div_to_load_result'; /* Here #content is the CSS selector for target DIV */
        //$config['js_rebind'] = "alert('it works !!'); "; /* if you want to bind extra js code */
        $this->load->library('table');
        $this->jquery_pagination->initialize($config);
        $data['html'] =  $this->jquery_pagination->create_links().'<br>'.$this->table->generate($this->modelname->modelFunction());

        $this->theme->view(path_of_view, $data);
    }
// now in view  add following line 
<div id="div_to_load_result"><?php echo $html; ?></div>