CI 묻고 답하기

제목 페이지네이션 쿼리스트링 질문입니다.
카테고리 CI 2, 3
글쓴이 if(money>0)happy 작성시각 2017/07/10 15:15:15
댓글 : 5 추천 : 0 스크랩 : 0 조회수 : 17032   RSS
if(money>0)happy

안녕하세요 선배님들 CI 페이지네이션을 구현은 했습니다만,

$config['page_query_string'] = true; 조건을 주고 검색조건이 들어갔을때에 페이지번호를 눌렀을때에

조건이 붙지않아서 제 기능을 하지 못하고있어서요 ^^;; 이전에 했던 방식은 단순 view 에 페이징로직처리를 완료하고나서

값을 뿌려준다음에 <a href=""> 태그에 붙혀주는 형태로 했었는데 CI 에서는 어떻게 쿼리스트링을 붙여줘야하는지 잘 모르겠습니다.

참고로 http://127.0.0.1/ci_home2/index.php/msc/board/lists/admin_board?kwd1=1month&kwd2=id&sText=user&per_page=10 

이런 형태로 만들어줘야하는데요. 

우선 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?kwd1=1month&kwd2=id&sText=user&per_page=10 

그래서 현재 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

여기 최신판 영상 강의 있습니다

http://www.cikorea.net/bbs/view/lecture?idx=18097&lists_style=

 

자세히 보시면 저는 몇가지 트릭 같은 기법을 사용했습니다.

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 절 구하는 방식이신거라, 바로 아실거라 생각 합니다.