CI 묻고 답하기

제목 페이지네이션 관련
글쓴이 ci_chobo 작성시각 2012/10/08 16:55:15
댓글 : 3 추천 : 0 스크랩 : 0 조회수 : 17046   RSS
[          A테이블의 글           ]
[           각종 버튼 목록       ]
[          B테이블의 목록       ]

이런식으로 한 페이지내에 구성이 되어 있을 경우에,

B테이블의 목록만 페이지네이션 적용할 수 있나요 ??

페이지이동이되면 A페이지는 전체 페이지를 새로 고침하는게 아니라,

B테이블의 목록만 다음으로 나오게 그게 가능한가요 ? 페이지네이션만으로 ??
 다음글 코드이그나이터에서 models 폴더에 파일은 수정이 안... (2)
 이전글 코드이그나이터 게시판 생성은 재동으로 되나요?&... (4)

댓글

한대승(불의회상) / 2012/10/08 18:03:05 / 추천 0
jquery 써서 ajax 연동하면 가능할 것 같습니다.

ajax 머리 아프면 그냥 iframe 로 해결 하시는게 더 빠를지도.. ^^
변종원(웅파) / 2012/10/08 18:21:52 / 추천 0
ci 처음 써봤을 때 귀찮아서 iframe으로 구현했던 적이..... ㅋ

ajax로 구현은 할 수 있겠으나 많이 복잡하겠네요.
지지고 / 2012/10/10 00:18:49 / 추천 0
테이블이란게... DB 테이블인지 table 태그인지 모르겠습니다.

음.. 각각에 영역을 div로 묶고.. 뷰로드할 때 

$area 안에는 a, b 배열이 있고...

각 배열 안에는 공통적으로

subject - 걍 DB에서 클릭한 번호를 ajax 전송받아서 긁어진 반환물
pagination -  pagenation 헬퍼가 호출된 클래스에  /page/숫자 식으로 세그먼트를 ajax로 넘겨준 값으로 만들어진 반환물
list - /page/숫자 에서 숫자를 모델에 넘겨서 그 숫자를 offset 으로 n개 제목만 긁어온 목록, 그걸 테이블 헬퍼로 가공한 결과물..

위에 세 개의 가공물이 있음... 가공물은 초기에 0 값을 가지며 ajax로 해당 컨트롤러에 세그먼트 형식으로 숫자를 전달하면 그 값에 따라 db쿼리 결과물이 달라지며 따라서 페이지네이션, 내용물, 목록이 다 바뀌게 됨.

컨트롤


function show_AB ($num=null)...


헬퍼로드 - 페이지네이션, 테이블


if ( !this->input->post[ajax] )

....  일반 요청 들어왔을 때 처리코드
전체 페이지를 반환..

$num=null 로 모델과 페이지네이션 처리,
결과는 1페이지, 0번부터 n개까지 목록 반환.
페이지네이션도 1페이지부터 시작하는 것으로 생경됨.

$this->load->view('entire_page',$area);

else( this->input->post[ajax] )

..... post 로 넘어온 값에 ajax 값이 있을 경우 처리코드...
이건 전체 페이지를 넘겨주지 않고  바뀔 부분만 반환..

$num 은 페이지네이션 으로부터 뽑아낸 페이지에 시작 게시물번호.
모델에 이 값을 넘기고 시작번호부터 n개 만큼 쿼리한 결과물을 넘김.
그걸 table 헬퍼로 가공해서 목록을 만듬.

$num 을 통해 자동으로 페이지 네이션이 생성.

$this->load->view('sub_pag_list_show',$area);


sub_pag_list_show 라는 뷰 내용.

// 전체 영역을 묶기
<div id="show" class="area">
   //A 테이블에서 읽어온 값을 뿌리는 영역
   <div id="area_a" class="...">
      .... 생략 ......
   </div>
   
   //B 테이블에서 읽어온 값을 뿌리는 영역
   <div id="area_b">
      
      // 선택한 해당 글 본문 영역
      <div id="subject area_b">
            <?php echo $area[b][subject]; ?>
      <div >

      // 페이지네이션 영역
      <div id="pagination area_b">
            <?php echo $area[b][pagination]; ?>
      <div >

      // 목록영역
      <div id="list area_b">
            <?php echo $area[b][list]; ?>
      <div >

   <div >

</div>

AJAX 부분.

ajax 에 pagination 부분 <a> 태그에 click 이벤트 연결.
펑션으로는  attr('href0 로 주소 뽑음.
action 은 method post, 요청주소는 href 로 뽑은 값.

예)  /index.php/show_AB/page/50 식으로 show_AB 컨트롤러에 50이라는 값을 넘김..

컨트롤러는 '50' 값을 $num 변수로 받고 이 변수에 기반으로 목록값, 페이지네이션을 생성 후결과물 조각을  ajax에 반환...

ajax 는 success: 이후에 펑션을 통해서
<div id="show" class="area">
위 영역에 에 넘겨진 값를 통해 바뀐 페이지 목록, 페이지네이션 출력 결과물을 삽입

본문은 안바뀌고 ajax를 통해 페이지네이션 부분과 목록 부분만 바뀜...


mvc 도 복잡한데 mvc 사이에 ajax가 깔짝데는 걸 이해하느라 어려움... v-a-ca (뷰-아약스-컨트롤러,모델 ) 식으로

1. 컨트롤러 안에 ajax 요청을 받아줄 메서드를 따로 만들던가.. 아니면 ajax 값에 따라 부문만 반환하는 메서드를 만듬
2. view에 컨트롤러로 부터 반환받는 뷰조각을 삽입할 구역을 설정...
3. ajax 가 view 에서 값을 가로채서 컨트롤러에 메서드에 전달, 또 반환받은 값을 뷰에 특정 영역에 삽입하도록 하면 됨.

적어놓고 보니까... 질문이 이게 아니었던 것 같네요... 뻘쭘..