제목 | 페이지네이션 쿼리스트링 질문입니다. | ||
---|---|---|---|
카테고리 | CI 2, 3 | ||
글쓴이 | if(money>0)happy | 작성시각 | 2017/07/10 15:15:15 |
|
|||
안녕하세요 선배님들 CI 페이지네이션을 구현은 했습니다만, $config['page_query_string'] = true; 조건을 주고 검색조건이 들어갔을때에 페이지번호를 눌렀을때에 조건이 붙지않아서 제 기능을 하지 못하고있어서요 ^^;; 이전에 했던 방식은 단순 view 에 페이징로직처리를 완료하고나서 값을 뿌려준다음에 <a href=""> 태그에 붙혀주는 형태로 했었는데 CI 에서는 어떻게 쿼리스트링을 붙여줘야하는지 잘 모르겠습니다. 이런 형태로 만들어줘야하는데요. 우선 CI 유저가이드도 참고하면서 페이지네이션 옵션도 읽어보았는데 저는 이런 형태로 만들어주면 된다고 생각을 했었습니다. $config['base_url'] = '/ci_home2/index.php/msc/board/lists/admin_board?'; 여기까지가 url 이라면 아래의 세그먼트를 $config['page_query_segment'] = 'kwd1='.$kwd1.'&kwd2='.$kwd2.'&text='.$text; 이런 형태로 붙여주면 아래와 같은 결과가 나올것이라고 생각했었으나.. 아니더군요 그래서 현재 http://127.0.0.1/ci_home2/index.php/msc/board/lists/admin_board?&per_page=10 이런 형태까지는 가능하도록했는데 포럼에서 http://www.cikorea.net/bbs/view/qna?idx=17285&page=1&view_category=&lists_style= 글을 참고하여 카이도님의 글도 읽어보았으나, 잘 이해가 가지 않습니다. $config['base_url'] 에서 어떤형태로 붙여줘야 원하는 검색 결과를 같이 가지고다니면서 페이징이 가능 할까요?
소스코드 첨부하겠습니다. 긴글 읽어주셔서 감사합니다. 1. $pageArr['url'] = $url = "/ci_home2/index.php/msc/board/lists/admin_board?"; $pageArr['page'] = $page = 10; $pageArr['segment'] = $segment = 6; $pageArr['num_links'] = $num_links = 4; $pageArr['type'] = $type = "count"; $pageArr['where'] = $where = ""; $main_data['page'] = $this->common->ci_pagination($pageArr); 2. public function ci_pagination($pageArr){ $kwd1 = !empty($pageArr['kwd1']) ? $pageArr['kwd1'] : ""; $kwd2 = !empty($pageArr['kwd2']) ? $pageArr['kwd2'] : ""; $text = !empty($pageArr['text']) ? $pageArr['text'] : ""; /********************************* ci 페이지 네이션 **********************************/ // 페이징 주소 $config['base_url'] = $pageArr['url']; // 게시물 전체 개수 if(($kwd1!="")&&($kwd2!="")&&($text!="")){ // 조건이 있을 경우에 $config['total_rows'] = $this->member_list->get_member_list($pageArr['type'],'','',$pageArr); } else { // 조건이 없을 경우에 $config['total_rows'] = $this->member_list->get_member_list($pageArr['type'],'','',''); } // 한페이지에 표시할 게시물 수 $config['per_page'] = $pageArr['page']; // 페이지 번호가 위치한 세그먼트 $config['uri_segment'] = $pageArr['segment']; // 선택된 페이지번호의 좌우로 숫자링크를 보여줄 개수 $config['num_links'] = $pageArr['num_links']; // 페이지 버튼 커스터마이징 $config['first_link'] = '처음'; $config['last_link'] = '마지막'; $config['next_link'] = '다음▶'; $config['prev_link'] = '◀이전'; // 전체 태그 $config['full_tag_open'] = '<table class="Nnavi">'; $config['full_tag_close'] = '</table>'; // 처음 태그 $config['first_tag_open'] = '<td class="m-tcol-ci">'; $config['first_tag_close'] = '</td>'; // 마지막 태그 $config['last_tag_open'] = '<td class="m-tcol-ci">'; $config['last_tag_close'] = '</td>'; // 다음 태그 $config['next_tag_open'] = '<td class="m-tcol-ci">'; $config['next_tag_close'] = '</td>'; // 이전 태그 $config['prev_tag_open'] = '<td class="m-tcol-ci">'; $config['prev_tag_close'] = '</td>'; // 현재 페이지 $config['cur_tag_open'] = '<td><a class="m-tcol-p">'; $config['cur_tag_close'] = '</a></td>'; // 링크 태그 $config['num_tag_open'] = '<td class="m-tcol-ci">'; $config['num_tag_close'] = '</td>'; // 페이지네이션 get방식으로 사용과 동시에 사용자임의설정 $config['page_query_segment'] = 'kwd1='.$kwd1.'&kwd2='.$kwd2.'&text='.$text; // 페이지네이션 get방식 허용 $config['page_query_string'] = true; // 페이지 네이션 초기화 $this->pagination->initialize($config); // 페이지 링크를 생성하여 view에서 사용할 변수에 할당 $main_data['pagination'] = $this->pagination->create_links(); // /ci_home2/index.php/msc/board/lists/admin_board/page // index.php의 뒤에서부터 찾는다 page 뒤가 6번째=세그먼트가 위치한자리 // 게시물 목록을 불러기오기 위한 offset,limit 값 가져오기 $page = $this->uri->segment($pageArr['segment'],1); if($page > 1){ $start = (($page / $config['per_page'])) * $config['per_page']; // 2/10 =0.2 * 10 = 2 } else { $start = ($page - 1) * $config['per_page']; // 1-1 = 0 * 10 = 10 } $limit = $config['per_page']; // 10 // 게시글 반환 0,10 $main_data['rows'] = $this->member_list->get_member_list('',$start,$limit,$pageArr); // 게시글 반환 0,10 /********************************* ci 페이지 네이션 **********************************/
|
|||
다음글 | 검색시 xx,xxx 이렇게 콤마를 이용해서 다중검색 ... (8) | ||
이전글 | CI에서 서브페이지 만들기? (4) | ||
kaido
/
2017/07/10 15:38:32 /
추천
1
|
if(money>0)happy
/
2017/07/10 16:08:03 /
추천
0
// kaido 감사합니다. 잘 참고하겠습니다! |
변종원(웅파)
/
2017/07/10 21:29:03 /
추천
1
지난주 강의에서 했던 내용이네요. ^^ 3.0 매뉴얼에서 2가지 옵션 조합하시면 됩니다.
$config['suffix'] = '?'.$_SERVER['QUERY_STRING']; $config['base_url'] = '/board/'.$this->uri->segment(2).'/index/page'; //페이징 주소 $config['first_url'] = $config['base_url'] . $config['suffix']; |
if(money>0)happy
/
2017/07/11 09:01:01 /
추천
0
//웅파 웅파님 우선 댓글 감사합니다. 죄송합니다 제가 원문에 CI 버전을 명시하지 않았네요 ㅠㅠ 저는 2.x 버전을 사용하고있어서 3.0 에서 지원하는 first_url을 사용 할 수가없는상황입니다. 음 .. 이렇다 할 해결책이 보이지 않아서 참 난감합니다 ㅠㅠ 지금도 열심히 머리굴려가면서 해결해보려고 노력중입니다. 해결하게된다면 저처럼 2.x 버전사용자들을위해서 꼭 공유하겠습니다!! |
kaido
/
2017/07/11 21:10:00 /
추천
0
http://www.cikorea.net/bbs/view/lecture?idx=7097&page=3&view_category=&lists_style= 강의 자료 밑에 보면 제가 압축 소스 올려놓았습니다. 2.x 버전에서 한거라 그대로 넣으신 다음에 쿼리만 바꿔서 사용 하시면 됩니다. 페이징 구하는 방식을 보니, 제가 올린거와 같은 1페이지당 limit 절 구하는 방식이신거라, 바로 아실거라 생각 합니다. |
여기 최신판 영상 강의 있습니다
http://www.cikorea.net/bbs/view/lecture?idx=18097&lists_style=
자세히 보시면 저는 몇가지 트릭 같은 기법을 사용했습니다.