만들면서 배우는 CodeIgniter Q&A

제목 94페이지 페이징처리 질문드립니다.
글쓴이 책상다리 작성시각 2013/10/18 13:02:27
댓글 : 6 추천 : 0 스크랩 : 0 조회수 : 12339   RSS
 CI 공부하는 학생입니다. 
class가 조금 생소해서 애를 먹고 있는데...ㅠ

아래소스에서 
total_rows 부분이 문제 인거 같습니다.
Fatal error: Unsupported operand types in ~~
이런 오류 발생하는데 이건 tota_rows 랑 per_page랑 형태가 달라서 발생하는 오류라는거 같습니다.
total_rows는 배열이고 per_page는 숫자라 그런거 같은데...
어떻게 수정을 해줘야 하는지 궁금합니다 ㅠㅠ
//페이지네이션 설정
  $config['base_url'] = '/bbs/board/lists/ci_board/'; //페이징 주소
  $config['total_rows'] = $this->board_m->get_list($this->uri->segment(3), 'count'); //게시물의 전체갯수
  $config['per_page'] = 5; //한 페이지 표시할 게시물 수
  $config['uri_segment'] = 5; //페이지 번호가 위치한 세그먼트




// Calculate the total number of pages
  $num_pages = ceil($this->total_rows / $this->per_page);
 다음글 xampp 컨트롤러 실행시간 1초이상 나옵니다. (3)
 이전글 99페이지 함수 문의입니다. (1)

댓글

변종원(웅파) / 2013/10/18 13:17:23 / 추천 0
책 소스랑 다른데요? 책 소스와 다르게 내용을 변경하신거면 
변경한 소스 전부 올려주셔야 합니다.

$this->total_rows <- 이걸 어디서 가져온건지 알아야 답변 가능합니다.
책상다리 / 2013/10/18 13:26:30 / 추천 0
정신이 없어서 잘못대답했네요...;;
아래쪽에 있는 내용은 pagination.php에 있는 내용입니다..;;


책상다리 / 2013/10/18 14:06:54 / 추천 0
 $config['total_rows'] = $this->board_m->get_list($this->uri->segment(3), 'count'); //게시물의 전체갯수

이 부분을 숫자로 고쳐서 출력을 해보면 올바르게 출력이 됩니다만...그렇게 할수는 없고;;;
수야디벨 / 2013/10/18 16:40:57 / 추천 0
 아 .. 본인 질문에 답이 써져 있는데요??

"total_rows는 배열이고 per_page는 숫자라 그런거 같은데..."

이 부분에서 답이 나왔습니다.

그러면 둘다 숫자로 바꿔주면 되겠네요.

그럼 total_rows가 배열이니까 이걸 숫자로 얻어오게 하면 되겠네요.

$config['total_rows'] = $this->board_m->get_list($this->uri->segment(3), 'count');

이 부분의 리턴값이 return $result->num_rows(); 처럼 num_rows 형식인가요?

이 부분이 배열로 넘어오는거 같은데, 그냥 그런거 잘 모르겠으면

$config['total_rows'] = count($this->board_m->get_list($this->uri->segment(3))); 처럼

가져오고자 하는 데이터를 그냥 그대로 배열로 가져온뒤 count로 감싸주셔도 됩니다. (따로 디피에서 COUNT(*)같은거 할 필요 없이)

하셔도 됩니다.

더 자세한 답변을 원하시면 get_list의 소스를 보여주세요





책상다리 / 2013/10/18 17:01:54 / 추천 0
 답변 감사합니다. 일단 count로 감싸서 해결했는데..아직 실력이 부족해서 다른쪽으론 못건드려 보겠네요 ㅠㅠ
좀더 공부하고 다른쪽으로 해결해보겠습니다 ㅠ

승희아빠 / 2013/10/18 19:14:11 / 추천 0
system 안의 libraries 의 pagenation.php 에 count 붙힌것은 지극히 잘못된 발상인듯 합니다.

오류가 발생한 페이지와 라인 있을텐데요.

오류 발생 원인은 말씀하신것이 맞지만 그렇게 된 것은 아마도 모델에서 잘못 리턴 받아서일겁니다.

추정컨데 모델에서는 2가지 형태로 리턴을 하게 되어 있습니다.  핵샘 키워드는 $type 입니다.

타입이 count 일 경우는 리스트의 수를, 아닐 경우 객체 배열로 리턴을 하죠.

board_m.php 부분에 if ( $type == 'count' ) 한번 확인 해 보세요.