【问题标题】:Pagination not working properly in codeigniter分页在 codeigniter 中无法正常工作
【发布时间】:2012-09-15 10:42:05
【问题描述】:

我的视图有分页,如果我点击下一个数字链接,它工作正常。喜欢:

1 2 > 

所以,如果我点击 2,它会进入第二页并显示正确的结果。但现在如果我想回到 1,它不会重定向我。即使有链接 3,我也无法访问 2。

这是我的代码:

控制器:

function list_providers()
{

    $admin_session_data= $this->session->userdata('user_logged_in');

    $this->load->model('/admin/provider_model');
    $this->load->library('pagination');
    $this->load->helper('url');

    $config['base_url'] = base_url()."index.php/admin/provider/list_providers/";
    $config['total_rows'] = $this->provider_model->countprovider();
    $config['per_page'] = 3;
    $config['creat_link'] = 1;
    $config['first_link'] = 'First';
    $config['last_link'] = 'Last';

    $this->pagination->initialize($config);
    $offset=($this->uri->segment(4)) ? $this->uri->segment(4) : 0;
    $data['list']= $this->provider_model->listproviders($config['per_page'],$offset);

    //$data['customer']= $this->provider_model->getcustomer_data($config['per_page'],$this->uri->segment(3));


    if(!empty($data))
    {   
        $this->load->view('admin/admin_header',$admin_session_data); 
        $this->load->view('admin/admin_top_nav',$admin_session_data); 
        $this->load->view('admin/admin_left',$admin_session_data);
        $this->load->view('admin/provider_list',$data);
        $this->load->view('admin/admin_footer',$admin_session_data);
    }

}

型号:

function listproviders($num,$offset)
{
    $this->load->library('pagination');

    //$query=$this->db->get_where('users', array('user_role_id'=>'3'));
    $query=$this->db->get('users',$num,$offset);

    // return result set as an associative array
    return $query->result_array();
}


function countprovider()
{
    $this->load->library('pagination');
    $query=$this->db->count_all_results('users');
    return $query;
}

我的分页显示如下:1 2 >

请看问题出在哪里。

【问题讨论】:

  • $config['creat_link'] = 1; 看看这个
  • 我认为分页库中有一个错误,因为我在几天前使用它时遇到了同样的问题
  • @raheelshan 但对我来说效果很好
  • @BhuvanRikka,您能否将此代码与您的代码不匹配,即使我没有得到 First && Last 选项。

标签: php codeigniter pagination


【解决方案1】:

我对您的控制器和模型进行了一些更改。更改注释:

控制器

// admin/provider/list_providers/3 <- Offset number
function list_providers($offset = null)
{    
    $admin_session_data= $this->session->userdata('user_logged_in');

    // Load models/libraries/helpers
    $this->load->model('admin/provider_model');
    $this->load->library('pagination');
    $this->load->helper('url');

    // Pagination config
    $config['base_url'] = site_url('index.php/admin/provider/list_providers') . '/';
    $config['total_rows'] = $this->provider_model->countprovider();
    $config['per_page'] = 3;
    // $config['creat_link'] = 1; <-- This is not a valid option
    $config['first_link'] = 'First';
    $config['last_link'] = 'Last';

    // Init config
    $this->pagination->initialize($config);

    // If the pagination library doesn't recognize the current page add:
    $this->pagination->cur_page = $offset;

    $data['list']= $this->provider_model->listproviders($config['per_page'],$offset);

    if(!empty($data))
    {   
        $this->load->view('admin/admin_header',$admin_session_data); 
        $this->load->view('admin/admin_top_nav',$admin_session_data); 
        $this->load->view('admin/admin_left',$admin_session_data);
        $this->load->view('admin/provider_list',$data);
        $this->load->view('admin/admin_footer',$admin_session_data);
    }
}

型号

function listproviders($num,$offset)
{
    // $this->load->library('pagination'); <-- There is no need for this
    $query = $this->db->get('users', $num, $offset);

    // Check if pages where found
    if ($query->num_rows() > 0)
    {
        return $query->result_array();
    }
    else
    {
        return FALSE;
    }

}


function countprovider()
{
    // $this->load->library('pagination'); <-- There is no need for this
    return $this->db->count_all_results('users');
}

【讨论】:

  • 是的...所有更改都是可以接受的,但它没有解决我的问题。
  • 你可以尝试添加(见控制器):$this-&gt;pagination-&gt;cur_page = $offset;
  • 真棒这工作...!!如果我添加 $this->pagination->cur_page = $offset;这个问题的哲学是什么?
  • CodeIgniter 分页库尝试根据 base_url 获取当前页面。在某些项目中,我遇到了相同的问题,即 CodeIgniter 无法确定当前页面。因此,当您使用 $this-&gt;pagination-&gt;cur_page 时,您会用正确的值覆盖它:)
  • 好的,谢谢..但是我的所有参数都像 $config['first_link'] = 'First';不工作,我希望我的分页看起来很漂亮。你能帮我吗。
【解决方案2】:

直接从库中创建链接.. 像这样..

$data['links']= $this->pagination->create_links();

并且在视图中给出类似的东西

<div align="center" style="margin-top:10px;background-color: #F1F8E0">
       <?php echo $links; ?>
</div>

编辑:

示例代码:

function  __construct()
    {

        parent::__construct();
        $this->load->helper('array');
        $this->load->helper('url');
        $this->load->helper('html');
        $this->load->helper('form');
        $this->load->library('form_validation');
        $this->load->library('pagination');
        $this->load->library('session');
        $this->load->model('listing','',TRUE);
    }

    // Shows pagination

    function index($uri_segment="3")
{   
        $config['base_url'] = base_url('index.php/listing_controller/index');
        $config['total_rows'] = $this->listing->get_rows();
        $config['per_page'] = 5;
        $config['uri_segment'] = 3;
        $this->pagination->initialize($config);
        $output['op']=$this->listing->get_paging_data($config['per_page'],$this->uri->segment(3));
        $output['links']= $this->pagination->create_links();
        $this->load->view('listing_view',$output);
    }

视图文件中的sn-p如上图

【讨论】:

  • @HarshalMahajan 您是否将 uri->segment 作为参数传递给函数索引?
  • 不直接传递,我将它取为一个变量名 $offset,它给出的值很好。我认为你和我的代码没有太大差异。
  • @HarshalMahajan 没问题.. 确保将uri-&gt;segment 作为参数传递给index()
  • @HarshalMahajan 正在工作吗?如果没有,你得到了什么错误?
  • @bhuvan ..它仍然给出与我在问题中所说的相同的问题。无法进入上一页。
猜你喜欢
  • 1970-01-01
  • 2017-11-27
  • 1970-01-01
  • 1970-01-01
  • 2018-06-11
  • 1970-01-01
  • 1970-01-01
  • 2012-02-22
  • 1970-01-01
相关资源
最近更新 更多