CI 묻고 답하기

제목 페이지네이션 질문 있습니다.
글쓴이 과학나라 작성시각 2013/09/12 10:59:12
댓글 : 2 추천 : 1 스크랩 : 0 조회수 : 15449   RSS



view sourceprint?
01.
$page = 2;
02.
// 모델 - 호출
03.
$this->load->model('simplebbsmodel');
04.
 
05.
 
06.
 
07.
 
08.
$this->load->library('pagination');
09.
 
10.
$config['base_url'] = 'http://devtest.domain21.org/welcome/bbslist';
11.
$config['total_rows'] = 21;
12.
$config['per_page'] = 10;
13.
$config['num_links'] = 10;
14.
 
15.
 
16.
 
17.
$offset = ($page - 1) * $config['per_page'];
18.
 
19.
$this->pagination->initialize($config);
20.
 
21.
 
22.
$data['paging'] = $this->pagination->create_links();
23.
 
24.
// 모델 - 쿼리
25.
$data['result'] = $this->simplebbsmodel->get_list($config['per_page'],$offset);    










우선 이때까지 도움을 주신 분들에게 감사드립니다.

많은 도움을 주셨지만 아직 해결이 안되서 죄송하길 따름이네요 ㅠ,ㅠ

여기까지 왔는데 조금만 노력하면 할수 있다는 생각에 염치 없지만 다시 한번 질문을 드립니다.

1page눌으면  10개의 게시글이 나오고  2page눌으면 그 전의 10개의 게시글이 나올려고 합니다.

간단히 설명하자면      "$offset = ($page - 1) * $config['per_page'];"

이 소스를 이용해서

변수 page가 1이면

1-1 * 10 = 0

변수 page가 2이면

2-1 - 10 = 10

이렇게 할려고 합니다.   그러니깐 0~10이 1page이고  11~20은 2page입니다.

일단 page 조정하면 그 해당 page는 잘 나옵니다.

문제는 변수 page를 유기적으로 변동해야하는데요 그 해당 페이지를 눌으때마다 

다른 소스를 보니 "$page  = get_seg("page");" 이렇게 하는건데 이게 get_seg 함수가 어디에 있는지도 확인 

조차 안되네요.. 

그리고 만약 2페이지를 눌으면 그 해당 page와 연동이 되어야 하는데 연동이 안되네요. 

예를들어 주소가 2페이지 눌으면 "주소/welcome/bbslist/10"로 이동되는데 이것을 어떻게 연동해야하는지

잘모르겠습니다.

부탁드립니다. 참고 부탁드립니다.


 다음글 session 질문입니다. (3)
 이전글 CSRF / AJAX / IE (2)

댓글

수야디벨 / 2013/09/12 15:49:04 / 추천 0
어제부터 이거 때문에 계속 골치 아파 하시는거 같$data['page_count']네요 .

$config['base_url'] = 'http://devtest.domain21.org/welcome/bbslist';
$config['total_rows'] = 21;
$config['per_page'] = 10;
$config['num_links'] = 10;

왜 $config['total_rows'] = 21; 를 고정시키시나요? 출력하실 게시물이 항상 21개가 고정인가요?

그냥 예시를 써드릴께요 한번 분석해보세요.

$limit = $this->uri->segment(3,0) //세그먼트 3번째껄 가져오는데 없으면 0
$offset = 10; //한 리스트에 보여줄 리스트의 숫자. 10이면 한페이지에 10개가 보인다.

//limt만큼 제한된 자료를 db에서 추출.

$data['page_list'] = $this->db_name->getDb('mytest',$limit,$offset); 
$data['page_count'] = $this->db->count_all('mytest'); // limit를 하지 않은 테이블의 갯수.


$config['base_url'] = 'http://devtest.domain21.org/welcome/bbslist';
$config['total_rows'] = $data['page_count'];
$config['per_page'] = $offset; //한페이지에 10개만 보여줄꺼니까.
$config['num_links'] = 10;

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

$data['paging'] = $this->pagination->create_links();



이렇게 하면, 페이지가 넘어가서 3번째 세그먼트가 10, 20이 될때마다
$limit의 값은 10, 20, 30, 등등으로 유기적으로 변경되고
$offset 의 값은 10 으로 고정되기 때문에

$limit가 0일때는  0~ 10의자료를
$limit가 10일때는 10~10의 자료를 (여기서 10~10이란 query로 생각해보면 10번째부터 10개를 가져오라는 뜻)

이런식으로 처리가되요.

이제 이렇게 까지 알려드렸는데 모르시면 ..ㅠㅠ

코드이그나이터 교재 사서 정독한번하세요 ㅎ 큰도움 됩니다 
과학나라 / 2013/09/13 00:04:13 / 추천 0
정말 감사합니다 ㅠ.ㅠ  지금 시간으로 드디어 해결되었습니다. ㅠㅠ

이 소스는정말 잊지 못할것입니다. ㅠㅠ 감사합니다