【问题标题】:pagination is not working in codeigniter分页在 codeigniter 中不起作用
【发布时间】:2016-08-23 06:02:31
【问题描述】:

我在 CodeIgniter 工作。我想为动态记录创建分页。所以我写了如下代码:

    $config = array();
    $config["base_url"] = base_url() . "employer/search_user";

    $config["per_page"] = 3;
    $config['use_page_numbers'] = TRUE;

    $config['cur_tag_open'] = '&nbsp;<a class="current">';
    $config['cur_tag_close'] = '</a>';
    $config['next_link'] = 'Next';
    $config['prev_link'] = 'Previous';


    if($this->uri->segment(3)){
        $page = ($this->uri->segment(3)) ;
    }
    else{
           $page = 1;
    }

    $query = "select sn.*,u.first_name,u.last_name,u.email,u.phone,group_concat(DISTINCT s.skill) as sk,group_concat(DISTINCT c.name) as ct from 
                users as u
                left join snapshot as sn on sn.user_id = u.user_id
                left join industry as ind on ind.ind_id = sn.industry
                left join city c ON(FIND_IN_SET(c.city_id, sn.current_location) > 0)
                left join skill s ON(FIND_IN_SET(s.skill_id, sn.skill) > 0)
                where ".$where." u.group_id = 3 group by u.user_id limit ".$config["per_page"];
    $data['users'] = $this->admin_model->query($query);

    $row = count($data['users']);
    $config["total_rows"] = $row;
    $config['num_links'] = $row;
    $this->pagination->initialize($config);
    $data["links"] = $this->pagination->create_links();

    $data['main_content']="employer/search_user";
    $this->load->view('employer/template', $data);

在这里,我在页面中有 3 条记录,但没有显示分页链接。我在构造函数中包含了分页库。我在$data["links"] 这个变量中没有得到任何信息。

那么我必须在哪里更正我的代码?我的代码有什么问题?

【问题讨论】:

  • $config["num_links"] 是将显示的分页链接数。例如。 $config['num_links'] = 3 then prev 1 2 3 next,,,, if its 4 then prev 1 2 3 4 next

标签: php codeigniter pagination


【解决方案1】:

您需要在查询中使用LIMITOFFSET。例如

$config['per_page'] = 3;
$config['uri_segment'] = 4; // This is the current page

$offset = 0;
if ($this->uri->segment($config['uri_segment']) != "") {
    $offset = $this->uri->segment($config['uri_segment']);
}

$limit = $config['per_page'];

$sql = "SELECT `field_name` FROM `table_name` WHERE `table_name`.field_name = ?";

if($limit != "") {
    $sql .= "LIMIT $limit ";
}

if($offset != "") {
    $sql .= "OFFSET $offset";
}

$result = $this->db->query($sql, array($field_data));

希望对你有帮助

【讨论】:

    【解决方案2】:

    对于 $config["total_rows"] = $row; 你只得到 3。因为你在查询中设置了限制。 请为无限制的总行编写另一个查询。我认为这将解决您的问题。

    下面是我的分页代码

      $config = array();
        $config["base_url"] = base_url() . "crm/crm/contactmgmt/modid/" .  $modid;
        if($this->input->post('Search')=='Search'){
            $data['pn']=$data1['pn']=$this->input->post('sel_prod');
            //echo "hello";
        }
        $config["total_rows"] = $this->Crm_model->record_count_unsubinst();
        $config["per_page"] = 6;
        $this->load->config('pagination');
        $config["uri_segment"] = 6;
        $config['enable_query_strings']='true';
    
        $data['activeTab'] = "View";
    
        $this->pagination->initialize($config);
        $page = ($this->uri->segment(6)) ? $this->uri->segment(6) : 0;
        $data['query'] = $this->Crm_model->listUnsubscribedInstn($config["per_page"], $page);
        $data["link"] = $this->pagination->create_links();
        $data["links"]=$data["link"];
        $data["cnt"]=$config["total_rows"];
        $data["sno"]=$this->uri->segment(6);
    

    【讨论】:

      猜你喜欢
      • 2012-04-18
      • 2014-01-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多