Codeigniter分页不起作用

时间:2016-12-05 10:19:09

标签: php codeigniter pagination

我正在使用codeigniter分页。但是在使用codeingiter分页时我遇到了问题。这是我面临的问题。

例如:如果一个页面有超过10条记录,这里我每页显示5条记录。如果我点击第二页,它会正确显示数据,但如果我需要返回第一页则无法正常工作。这是我的代码:

控制器:

class Testimonial extends CI_Controller {
function __construct() { 
        parent::__construct();
        //here we will autoload the pagination library
        $this->load->model('testimonial_model');
        $this->load->library('pagination');
    }
public function index()
{

    $config = array();
    $config["base_url"] = base_url('testimonial/index');
    $config['total_rows'] =   $this->testimonial_model->record_count();//here we will count all the data from the table
    $config['per_page'] = 2;//number of data to be shown on single page
    $config["uri_segment"] = 2;
    $this->pagination->initialize($config);
    $page = ($this->uri->segment(3)) ? $this->uri->segment(3) : 0;
    $data["records2"] = $this->testimonial_model->get_all_testimonials($config["per_page"], $page);
    $data["links"] = $this->pagination->create_links();//create the link for pagination
    $data['mainpage'] = "testimonial";
    $this->load->view('templates/template',$data);
}   
}

型号:

class Testimonial_model extends CI_Model
{    
function get_all_testimonials($limit, $start)
{
    $this->db->limit($limit, $start);
    $this->db->select('T.*');
    $this->db->from('testimonials AS T');
    $this->db->where(array('T.status'=>1));
    $q = $this->db->get();
    if($q->num_rows()>0)
    {
        return $q->result();
    }
    else 
    {
        return false;
    }
}

function record_count()
{
    return $this->db->count_all("testimonials");
}
}

1 个答案:

答案 0 :(得分:0)

使用此答案请阅读一次代码以了解它

public function index()
{

    $config = array();

    //$config["base_url"] = base_url('testimonial/index');

        $get_vars = $this->input->get();
        if(is_array($get_vars))
        $config['suffix'] = '?'.http_build_query($get_vars,'', "&");
        //$config['prefix'] = '?'.http_build_query($get_vars,'', "&");
        $config['base_url'] = base_url().$this->router->class.'/index';
        $config['first_url'] = $config['base_url'] . (isset($config['suffix'])?$config['suffix']:'');

    $config['total_rows'] =   $this->testimonial_model->record_count();//here we will count all the data from the table
    $config['per_page'] = 2;//number of data to be shown on single page


    //this line should be according to url to fetch actual value
    $config["uri_segment"] = ($this->uri->segment('2')?$this->uri->segment('2'):0); // 2 or 3 based on ur url


    $this->pagination->initialize($config);
    $page = $config["uri_segment"];
    $data["records2"] = $this->testimonial_model->get_all_testimonials($config["per_page"], $page);
    $data["links"] = $this->pagination->create_links();//create the link for pagination
    $data['mainpage'] = "testimonial";
    $this->load->view('templates/template',$data);
}