2012-10-04 7 views
0

나는 매력처럼 작동하는 페이지 매김 코드를 가진 코드 서명자 응용 프로그램을 가지고 있습니다. 페이지 매김을 사용하면 방문자가 페이지 당 얼마나 많은 레코드를보고 싶은지 선택할 수 있습니다. 이제 다음을 추가하겠습니다 :codeigniter에서 페이지 매김을 사용자 정의했습니다.

총 Z 레코드에서 X부터 Y까지를 표시합니다.

이제 Z는 쉽습니다 ... 해결되었습니다. 아무도 내가 어떻게이 문제를 해결할 수 있다고 말할 수 있습니까?

public function displayAllUsers() 
    { 

     if ($this->uri->segment(3) !="") { 
     $limit = $this->uri->segment(3); 
     } else { 
     $limit = 10; 
     } 

     $offset = 4; 
     $offset = $this->uri->segment(4); 
     $this->db->limit($limit, $offset); 
     $data['users'] = $this->backOfficeUsersModel->get(); 
     $totalresults = $this->db->get('back_office_users')->num_rows(); 

     $this->session->set_userdata('totalresults', $totalresults); 

     //initializing & configuring paging 
     $this->load->library('pagination'); 
     $config['base_url'] = site_url('/backOfficeUsers/displayAllUsers/'.$limit.'/'); 
     $config['total_rows'] = $totalresults; 
     $config['per_page'] = $limit; 
     $config['uri_segment'] = 4; 
     $config['full_tag_open'] = '<div class="dataTables_paginate paging_bootstrap pagination"><ul>'; 
     $config['full_tag_close'] = '</ul></div>'; 
     $config['cur_tag_open'] = '<li><a href=# style="color:#ffffff; background-color:#258BB5;">'; 
     $config['cur_tag_close'] = '</a></li>'; 
     $config['num_tag_open'] = '<li>'; 
     $config['num_tag_close'] = '</li>'; 

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

     //....irelevant content..... 

    } // end of function displayAllUsers 

어떤 도움 깊이 이해 될 것이다 : 여기

제가 가지고있는 기능이다.

답변

1

그렇게 어렵지는 않습니다. 실제로 페이지 매김을 이해하면 X와 Y의 가치를 얻을 수있는 방법이 분명합니다.

우선 X와 Y의 차이는 물론 $limit-1과 같습니다. X 값은 변수 $offset에 1을 더한 값과 같아야합니다 (오프셋은 일반적으로 0이 아닌 1부터 시작 함). 그리고 거기에서 Y가 $offset + $limit과 같다고 이해하게 될 것입니다.

$X = $offset + 1; 
$Y = $offset + $limit; 

경우, 당신은 마지막 페이지에있어, 당신은 당신이 데이터베이스에서 잡아 총 행을 확인해야합니다 그것의 경우, Y.에 대한 올바른 값이 있는지 확인하는 것이 좋습니다 페이지 당 한도보다 작 으면

if (fetched_rows < $limit) 
{ 
    $Y -= ($limit - fetched_rows); 
} 
+0

하이 케말로 변경하십시오. 나는 12 개의 기록이있다. 페이지 당 10 개의 레코드를 표시합니다. 첫 번째 페이지에서 위의 코드를 사용하면 다음과 같습니다. 총 12 개 중 1에서 11을 표시합니다. 어느 것이 잘못 되었습니까? 다음 페이지에는 다음이 표시됩니다. 총 12 개 중 11 ~ 21 개 표시이 문제를 어떻게 해결할 수 있습니까? – Zoran

+0

@Zoran 나빠. 나는 모든 것을 생각하지 않았다. 내 대답을 업데이트했습니다. –

+0

내 페이지 번호를 4로 변경하여 내가 가진 것을 더 잘 볼 수 있습니다. 코드를 업데이트 한 후에는 하나의 작은 문제 만 해결할 수 있습니다. 첫 번째 페이지에서 4 개의 레코드가 표시되면 다음을 읽으십시오. 총 12 개 중 1 ~ 5 개를 표시합니다 (1 ~ 4 또는 아닐까요?) : 12의 총에서 5 ~ 9을 표시하고 마지막 페이지는 이것을 읽었습니다 : Showing 9 to 13 of total of 12 is wrong, 나는 총 12 레코드가 있습니다. – Zoran

관련 문제