2

私は、Codeigniter ページネーション ライブラリを使用して、

ページネーション クラスを使用して表示される最初と最後のアイテムの数を取得するにはどうすればよいでしょうか。

したがって、12 件の結果があり、per_page が 5 に設定されているとします。

ページ 1:Displaying 1 to 5 of 12 results
ページ 2:Displaying 6 to 10 of 12 results
ページ 3: Displaying 11 to 12 of 12 results.

4

3 に答える 3

6

シンプルに保ちます。

3 つの変数が必要です。結果の開始、結果の終了 (全体ではなくページ内)、および合計結果。

  1. 合計結果はすでにわかっています (ページネーションから)。と呼びましょう$total

  2. $curpageそのため、 CI インスタンスから現在のページ ( ) の値を取得します。それで、

    $result_start = ($curpage - 1) * $per_page + 1;
    if ($result_start == 0) $result_start= 1; // *it happens only for the first run*
    
  3. の場合$result_end、ページあたりの値を追加するだけで済みますが、1 つ少なくなることを考慮して、

    $result_end = $result_start+$per_page-1;
    
    if ($result_end < $per_page)   // happens when records less than per page  
        $result_end = $per_page;  
    else if ($result_end > $total)  // happens when result end is greater than total records  
        $result_end = $total;
    
  4. これら 3 つの値をすべて送信して表示します。

    echo "displaying $result_start to $result_end of $total";
    
于 2013-01-26T04:09:38.403 に答える
3

最後のページの要素が $per_page 未満の場合を処理する必要があることを除いて、イタチのソリューションはうまく機能します。

if ($result_end > $total) {
    $result_end = $total;
}
于 2014-07-15T18:36:49.870 に答える
0

CodeIgniter コントローラ ファイル内

$params['limit'] = 15;
        $params['offset'] = ($this->input->get('per_page')) ? $this->input->get('per_page') : 0;
        $config = $this->config->item('pagination');
        $config['per_page'] = $params['limit'];
        $config['base_url'] = site_url('cy_controller/action?');
        $config['total_rows'] = $this->abcd_model->get_count($params);
        $this->pagination->initialize($config);
        $data['merchant'] = $this->abcd_model->get_all($params);
        $countMerchant = count($data['merchant']);
        if ($params['offset'] == 0) {
            $find_total_record = $countMerchant;
        } else {
            $valuec = $params['offset'] + $params['limit'];
            if ($valuec > $config['total_rows'])
                $find_total_record = $params['offset'] + $countMerchant;
            else
                $find_total_record = $params['offset'] + $params['limit'];
        }
        $per_page_total = $find_total_record;

        $initial = $params['offset'] == 0 ? 1 : $params['offset'];
        $data['showing'] = "Showing  " . $initial . " to " . $per_page_total . " of " . $config['total_rows'] . " results";
        $data['_view'] = 'cy_controller/action';
        $this->load->view('layouts/main', $data);

そしてビューファイルで

 <div class="pull-left">
     <?php echo $showing; ?>
  </div>
于 2018-09-20T14:47:30.580 に答える