【问题标题】:Codeigniter pagination links dosnt work after the first pageCodeigniter 分页链接在第一页之后不起作用
【发布时间】:2014-04-05 17:13:20
【问题描述】:

我有一个搜索字段,我想用分页显示结果。

在第一个结果页面中一切正常,但在其他页面中没有任何错误显示,当返回第一页时也有注释。

我将发布的密钥放入会话中以避免丢失。

但仍然注意到。

这是我的控制器:

  public function search()
{


    $this->session->set_userdata('searched',$this->input->post('searchterm'));
    $searchterm = $this->session->userdata('searched');
    $limit = ($this->uri->segment(3) > 0)?$this->uri->segment(3):0;

    $config['base_url'] = base_url() . 'home/search';
    $config['total_rows'] = $this->home_model->search_record_count($searchterm,$language);
    $config['per_page'] = 10;
    $config['uri_segment'] = 3;
    $config['display_pages'] = TRUE; 
    $choice = $config['total_rows']/$config['per_page'];
    $config['num_links'] = 3;       
    $this->pagination->initialize($config);

    $data['results'] = $this->home_model->search($searchterm,$limit,$language);
    $data['links'] = $this->pagination->create_links();
    $data['searchterm'] = $searchterm;
    $data['total']= $this->home_model->search_record_count($searchterm,$language);      


        putHeader();
        putTop();
        putTopmenu();
        putSearch($data);
        putFooter();
}

这是我的模型:

  public function search_record_count($searchterm)
{
  $sql = "SELECT COUNT(*) As cnt FROM content WHERE body LIKE '%" .  $searchterm . "%'";
  $q = $this->db->query($sql);
  $row = $q->row(); 
  return $row->cnt;
}

public function search($searchterm,$limit)
{

    $data = $this->db
                    ->select('content.title,content.id,content.category,content.body,path')
                    ->from('content')   
                    ->join('categories','noor_content.category = categories.id')                    
                    ->like('noor_content.title', $searchterm)
                    ->like('noor_content.body', $searchterm)
                    ->limit("5")        
                    ->order_by("content.id","DESC")
                    ->get();

    if($data->num_rows() > 0)
    {

        return $data->result();
        //print_r($data);exit();
    }
    else
    {

        return 0;
    }
}

【问题讨论】:

  • 你试过$config['base_url'] = site_url('home/search');吗?启用错误报告以查看错误

标签: codeigniter search hyperlink pagination


【解决方案1】:

问题是您没有根据分页限制查询。在您的控制器中,您将获得第三个 URL 段

$limit = ($this->uri->segment(3) > 0)?$this->uri->segment(3):0;

然后将它传递给你的模型,但你没有用它做任何事情。在您的模型中,您想做类似的事情

$data = $this->db
    ->select('content.title,content.id,content.category,content.body,path')
    ->from('content')   
    ->join('categories','noor_content.category = categories.id')                    
    ->like('noor_content.title', $searchterm)
    ->like('noor_content.body', $searchterm)
    ->limit("10, " . $limit) //Edited this line     
    ->order_by("content.id","DESC")
    ->get();

【讨论】:

    【解决方案2】:

    我认为你应该使用 method = 'get' 而不是 post...我的意思是这样的 ..

    <form method="get" action="your_controller/your_function">
       //your search form 
    </form>
    

    通过使用 get 而不是 post,您不必使用任何会话变量,您可以在控制器中轻松访问它们

    $this->input->get('feild_name');
    

    此外,您不会在分页中遇到第二页或任何其他页面的问题,因为所有搜索字段都附加在 url 中,您可以使用 $this-&gt;input-&gt;get('feild_name'); 轻松访问它,直到您的 url 更改为其他内容.. 我也会节省大量编码..

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-04-02
      • 2014-02-03
      • 1970-01-01
      • 2013-10-28
      • 2017-08-01
      • 1970-01-01
      相关资源
      最近更新 更多