0

我要把我的头发拉过这个!

在使用分页(通过 CI)初始加载我的页面时,即使我只想要 3 行,也会显示所有行。但是,在单击其他页面时,它工作正常(显示正确的行),但第 1 页始终是“选择”(不可点击),即使我点击第 2、3 页等。

有任何想法吗?

我的控制器

function album($type, $album_id, $album_name) {

    $this->load->library('pagination');
    $config['base_url'] = base_url("photo_store/album/$type/$album_id/$album_name/");
    $config['total_rows'] = $this->Media_model->get_photos($album_id, 'display_date DESC', NULL, NULL, TRUE);
    $config['per_page'] = 3;
    $this->pagination->initialize($config);
    $album_photos = $this->Media_model->get_photos($album_id, 'display_date DESC', $config['per_page'], $this->uri->segment(6), FALSE);

    $this->_load_view(array(
        /* some other variables here */
        'album_photos' => $album_photos
    ));

)

private function _load_view($more_data) {
    $data = array_merge($more_data, array( /* some other variables here */ ));
    $this->load->view('template', $data);
}

我的模型

public function get_photos($album_id=NULL, $order_by='display_date DESC', $limit=NULL, $offset=NULL, $count=FALSE) {

    $result = array();
    $query = $this->db->select('medium.*')->join('medium', "$this->item.medium_id = medium.id", 'inner')->order_by($order_by);
    $limit = $limit ? $limit : '0';
    $offset = $offset ? $offset : '0';
    if ($limit!=='0' && $offset!=='0') {
        $query->limit($limit, $offset);
    }

    if ($album_id) { $result = $query->get_where($this->item, array('album_id' => $album_id)); }
    else { $result = $query->get($this->item); }

    if ($count){ return $result->num_rows(); }
    else { return $result->result(); }

}

我的观点

foreach ($album_photos as $photo) {
    //display photos here
}
echo $this->pagination->create_links();
4

5 回答 5

3

您可以将其添加到配置数组中,以便分页知道在哪里可以找到当前页面:

$config['uri_segment'] = 4;
于 2012-11-16T20:04:33.393 回答
1

我相信部分问题出在此处:

if ($limit!=='0' && $offset!=='0') {
    $query->limit($limit, $offset);
}

由于您else的语句没有部分,因此第一页的查询永远不会受到限制。

我建议您将该代码更改为

if ($limit!=='0') {
    $query->limit($limit, $offset);
}

甚至只是

$query->limit($limit, $offset);

因为$limit理论上不应该null或者0因为你已经将它设置为3. $offset,除非设置,否则您可以在模型的函数中0替换它,null

于 2012-05-03T20:58:58.597 回答
1

当 url 中传入的 uri 段超过 3 个时,分页选择的页面将无法正确显示,它会一直突出显示第一页。

分页工作正常,但所选页面未正确显示。

为了解决这个问题,解决方案:

转到位于system->libraries->Pagination.php的Pagination.php文件

只是简单地设置

var $uri_segment = 4;// or 5 or 6;

它会起作用的。

于 2012-09-28T12:52:44.873 回答
0

您可以将其添加到配置数组中,以便分页知道在哪里可以找到当前页面:

$config['uri_segment'] = 4; // Your appropriate uri segment: 5 or 6
于 2015-12-30T08:41:49.580 回答
0

尝试编写您的控制器,如下所示:

public function index($page=''){
//...
$page = ($page!='')? $page : 0;
$config["cur_page"] = $page;

//...

}
于 2016-12-14T12:40:17.707 回答