0

私は codeigniter ページネーションを使用しています ここに私のコードがあります

$config['base_url'] = $this->config->base_url().'users/allusers/';
    $config['uri_segment'] = 3;
    $config['next_link'] = 'Next';
    $config['prev_link'] = 'Prev';
    $config['full_tag_open'] = '<div id="pagination">';
    $config['full_tag_close'] = '</div>';   
    $config['total_rows'] = $this->usersmodel->getUsersCount();
    $config['per_page'] = 20;   
    $this->pagination->initialize($config);     
    $data['paging']=$this->pagination->create_links();      
    $data['query']=$this->usersmodel->getAllusers($config['per_page'],$this->uri->segment(3));

ここで、グリッドにレコード番号を追加する必要があります。これが私のグリッド コードです。

    $i=1;
    foreach ($query->result() as $row){
     エコー $i;
         echo $row->username;
         echo $row->name;
         echo $row->city;
         echo $row->address;        
     $i++;
     }
    ?>

ここで $i は、2 ページ目にいるときでも常に 1 ~ 20 の数字を出力しています。実際、私は 20-40 を印刷する必要があります。

4

3 に答える 3

1

$i を現在のページから 1 を引いた値にページ内の行数を掛けた値に設定する必要があります。

交換:

$i=1;

$i = ( $this->pagination->cur_page > 1 ) ? ( $this->pagination->cur_page - 1 )  * $config['per_page'] : 1 ;

cur_page にアクセスできない場合は、次のような方法でページネーション クラスを拡張してみてください。

MY_Pagination.php というファイルを作成し、application/libraries/ に配置します。

このコードを拡張ページネーション クラスに追加します。

class MY_Pagination extends CI_Pagination {

    public function __construct() {
        parent::__construct();
    }

    public function getCurrentPage() {
        return $this->cur_page;
    }
}

config.php でクラス拡張プレフィックスが MY_ に正しく設定されていることを確認することを忘れないでください (109 行目あたり)。

次に、次のようにアクセスできます。

$i = ( $this->pagination->getCurrentPage() > 1 ) ? ( $this->pagination->getCurrentPage() - 1 )  * $config['per_page'] : 1 ;

この質問の一部のコンテンツを使用し、わずかに変更しました。

codeigniterページネーションライブラリでページ番号をエコーする方法は?

于 2012-11-25T16:49:20.580 に答える
1

$iページ番号にページあたりの行数を掛けた値に設定します。したがって、配列にループスルーすると、最初のページでは 0 ~ 20、2 ページ目では 20 ~ 40 から開始されます。

ただし、この方法では、最初のページが 0、2 番目のページが 1 などであることを確認する必要があります。

$i = ($page_number - 1) * $config['per_page']; 
// $page_number may be $this->uri->segment(3) from what I can determine from your code.

foreach ($query->result() as $row){
    echo $i; 
    echo $row->username;
    echo $row->name;
    echo $row->city;
    echo $row->address;        
    $i++;
}
于 2012-11-25T16:24:44.327 に答える
1

このコードは、どこでもページネーションに使用できます........

codeIgniter によって提供される組み込みの Pagination クラスがあります。ユーザーガイドで見つけることができます。

ページネーションをゼロとして使用する関数で開始インデックス変数を定義します。

 public function pagination($start_index = 0)

{

 $result = $this->model->get_results($data); //this $data is the argument which you are   passing to your model function. If you are using database to get results array.

 $items_per_page = 10;   //this is constant variable which you need to define

 $filtered_result = array_splice($result, $start_index, ITEM_PER_PAGE_USERS);

 $model['$filtered_result'] = $filtered_result;

 $total_rows = count($result);

$model['page_links'] = create_page_links  (base_url()."/controlelr_name/pagination",ITEM_PER_PAGE_USERS, $total_rows);

$this->load->view('controller_name/view_file_name', $model);

}

 function create_page_links($base_url, $per_page, $total_rows) 

{

 $CI = & get_instance();
 $CI->load->library('pagination');

$config['base_url'] = $base_url;
$config['total_rows'] = $total_rows;
$config['per_page'] = $per_page; 

$CI->pagination->initialize($config); 

return $CI->pagination->create_links();

}

于 2012-11-25T17:17:27.080 に答える