codeigniter分页不按预期工作

时间:2010-12-01 20:24:01

标签: codeigniter pagination

我尝试了很多,但似乎无法弄清楚这一点,任何帮助表示赞赏。我的文章有投票,我有一个页面应该显示大多数投票的文章。我使用codeigniter btw。 控制器:

function most_voted()
    {
        $per_page = 3;
        $cur_page = $this->uri->segment(4);
        /*
        if($cur_page == "") $cur_page = 1;
        else $cur_page = (integer)$cur_page;
        */
        $offset = ($cur_page - 1) * $per_page;
        if($offset < 0) $offset = 0;
        $this->load->model('article_model');
        $result_rows = $this->article_model->GetMostVoted($per_page,$cur_page);
        $total_rows = sizeof($result_rows) + 10;
        echo "total rows is : ".$total_rows.'<br>';
        echo "cur page is   : $cur_page <br>";

        //$this->load->library('pagination');
        $config['base_url'] = base_url().'articles/most_voted/page/';
        $config['uri_segment'] = 4;
        $config['num_links'] = 3;
        $config['first_link'] = '<<First';
        $config['last_link'] = 'Last>>';
        $config['prev_link'] = '< Previous';
        $config['next_link'] = 'Next >';
        $config['total_rows'] = $total_rows;
        $config['per_page'] = $per_page;
        $this->pagination->initialize($config);


        $data['articles'] = $result_rows;
        $data['view_file_name'] = 'articles/all_articles_view';
        $this->load->view('includes/template',$data);
        //echo $this->db->last_query();
    }

模特:

function GetMostVoted($limit,$offset)
    {
        $this->db->order_by('votes','desc');
        $q=$this->db->get('cgh_articles',$limit,$offset);
        if($q->num_rows() > 0)
        {
            foreach($q->result() as $row)
            {
                $data[] = $row;
            }
            return $data;
        }
    }

问题: 问题是,虽然我喜欢分页  &LT;上一页1 2 3 4 5下一页> 但是点击2会转到url:page / 3 点击3进入网址:第6页 点击4进入网址:第9页 等等。 我想点击2转到第2页,第3页转到第3页,依此类推。关于什么是错误的任何建议?

如果您需要更多信息,请告诉我,谢谢。

2 个答案:

答案 0 :(得分:3)

分页类的工作方式是返回页面应该开始的项目。

例如,url:hostanme / controller / page / 9表示应该从第9个投票最多的文章开始呈现页面。请参阅codeigniter documentation中的示例。

此外,您还有$total_rows = sizeof($result_rows) + 10;。那是为什么?

答案 1 :(得分:1)