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

URLに渡されたuriセグメントが3つを超えると、選択したページ付けのページが正しく表示されず、常に最初のページが強調表示されます。

ページ付けは機能していますが、選択したページが正しく表示されません。

これを解決するには、解決策:

system->libraries->Pagination.phpにあるPagination.phpファイルに移動します

設定するだけ

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

それが動作します。

于 2012-09-28T12:52:44.873 に答える
1

問題の一部はここに来ていると思います:

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

elseステートメントの一部がないため、クエリがその最初のページに制限されることはありません。

そのコードを次のように変更することをお勧めします

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

または単に

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

に設定したため、理論的には or になることはあり$limitませnullん。、設定されていない限り、モデルの関数で置き換えることができるようにする必要があります。03$offset0null

于 2012-05-03T20:58:58.597 に答える
0

これを構成配列に追加するだけで、ページネーションが現在のページの場所を知ることができます。

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