제목 | 염치없지만 페이징 관련하여 또 질문드립니다.. | ||
---|---|---|---|
카테고리 | CI 2, 3 | ||
글쓴이 | 창쓰 | 작성시각 | 2017/08/04 14:34:28 |
|
|||
질문 올린지 얼마 되지않았는데, 또 질문을 올리게 되서 정말 죄송합니다.. 여러 시도를 해보고, 코드이그나이터 한국포럼에도 찾아보고 밑에 있는 링크를 참고하였고, 구글링도 해보고, 코드이그나이터 프레임워크 책도 참고하였지만.. 도저히 해결방안이 나오지않아 또 한번 이렇게 질문을 드립니다.
현재 문제점--------- 컨트롤러에 문제가 있다고 생각하여, 컨트롤러의 소스를 첨부합니다. public function lists(){ $this->load->view('head'); $this->load->model('write_model'); $this->load->helper(array('url','HTML')); $this->load->library('pagination'); //페이지네이션 설정 $config['base_url'] = '/index.php/write/lists';//페이징주소 $config['total_rows'] = $this -> write_model -> get_list($this -> uri -> segment(3), 'count');//게시물전체개수 $config['per_page'] = 10; //한페이지에 표시할 게시물수 $config['uri_segment'] = 5; //페이지 번호가 위치한세그먼트 "이 부분이 정말 이해가 안감" $this -> pagination -> initialize($config);//페이지네이션 초기화 $data['pagination'] = $this -> pagination -> create_links(); //페이지링크를 view에서 사용할 변수로 할당 //게시판 목록을 불러오기위한 offset,limit 값 가져오기 $page = $this -> uri -> segment(5, 1); if ($page > 1) { $start = (($page / $config['per_page'])) * $config['per_page']; } else { $start = ($page - 1) * $config['per_page']; } $limit = $config['per_page']; $data['list'] = $this -> write_model -> get_list($this -> uri -> segment(3), '', $start, $limit); $this->load->view('/lists', $data); $this->load->view('footer'); }
혹시몰라 모델 소스도 첨부합니다. function get_list($table = 'bookingdb', $type = '', $offset = '', $limit = '') { $limit_query = ''; if ($limit != '' OR $offset != '') { // 페이징이 있을 경우 처리 $limit_query = ' LIMIT ' . $offset . ', ' . $limit; } $sql = "SELECT * FROM bookingdb ORDER BY id DESC " . $limit_query; $query = $this -> db -> query($sql); if ($type == 'count') { $result = $query -> num_rows(); } else { $result = $query -> result(); } return $result; }
너무 잦은 질문에 불쾌감을 주었다면 정말로 선배님들께 죄송합니다. 문과생 출신으로, 개발을 하고 싶어 열심히 배우고 싶습니다. 답변 달아주시는 선배님들의 은혜를 잊지않고, 꼭 전문가가 되어, 새로 시작하시는 분들에게 도움이 될수있도록 하겠습니다. |
|||
다음글 | csrf ajax사용시 403 (forbidden) e... (1) | ||
이전글 | 페이지네이션 작업중 오류 (8) | ||
배강민
/
2017/08/04 14:59:32 /
추천
0
|
창쓰
/
2017/08/04 15:04:21 /
추천
0
@배강민 저도 해당 게시글보고 3을 넣고 시도하였지만, 페이지는 넘어가지만, 테이블이 안바뀌네요ㅠ ㅠㅠ
|
창쓰
/
2017/08/04 15:06:47 /
추천
0
|
배강민
/
2017/08/04 15:08:57 /
추천
0
흠 근데 다른부분도 좀 이상하네요. 모델 메서드가 function get_list($table = 'bookingdb', $type = '', $offset = '', $limit = '') { 인데 $table 자리에 $this -> uri -> segment(3)를 인수로 사용하셔서 이상하다 봤는데, $table을 사용하지 않으셔서 문제는 없어 보이긴한데, 나중에 수정하시려는건지 모르겠지만, 테이블명을 받아서 사용하시려는듯하긴한데, 현재이 코드상으로는 이상하긴하네요. |
창쓰
/
2017/08/04 15:14:00 /
추천
0
@배강민 넵넵~ 맞습니다. 제가 $table을 넣어서 sql에 넣었는데, 테이블을 못 읽더라구요 ㅠㅠ 그래서 임시로 직접 입력해놨습니다 ㅠㅠ 정말로 어렵군요 ㅠㅠㅠ 일단는 @이강민 선배님말씀처럼 모델 부분 수정을 좀 해봐야할 것 같네요.ㅠㅠ 감사합니다 ㅠ |
창쓰
/
2017/08/04 15:24:49 /
추천
0
아이고 해결이 안되네요 ㅠㅠ model 부분에서 $sql = "SELECT * FROM " .table. " ORDER BY id DESC " . $limit_query; 을 넣으면, 테이블명을 읽어오지를 못해서.. booking db라고 넣어줬습니다. 너무 어렵네요..ㅎㅎ 컨트롤러 문제인것같은데.. 하단의 숫자를 누르면 url은 잘 바뀌는데, 테이블 내용들이 안 바뀌는 문제가 있네염..ㅠㅠ |
닉
/
2017/08/04 16:31:05 /
추천
0
쿼리 출력해서 확인해보시면 답 나올겁니다.
|
배강민
/
2017/08/04 16:36:33 /
추천
0
$this -> uri -> segment(3) 여기에 테이블명이 받아지는게 맞긴맞나요?
|
뫄뫄잉뿌
/
2017/08/04 17:10:14 /
추천
0
오타,,,는 아니겠죠? $table
|
하늘치
/
2017/08/04 17:25:54 /
추천
0
url 주소가 아래처럼 이루어져 있다는 거죠? 처음 접속시 : 도메인/index.php/write/lists/
2페이지 클릭: 도메인/index.php/write/lists/2
도메인/index.php/write/bookingdb/lists/3 이번에는 테이블명이 들어가 있기 때문에, 페이지 숫자를 가져오려면 $page = $this -> uri -> segment(4,1) 라고 해야 합니다.
$start = (($page / $config['per_page'])) * $config['per_page']; 이런 소스가 있지요? $start = ($page - 1) * $config['per_page']; 이렇게 바꿔주시면 됩니다.
아, 그리고.. 배강민님이 말씀하신 부분 꼭 확인해보세요. 컨트롤러에서 모델 function 불러오는 부분 있죠? 그런데, 모델에서는
|
창쓰
/
2017/08/06 13:29:35 /
추천
0
@배강민 @하늘치 @뫄뫄잉뿌님 다들 감사합니다 오류를 확인했습니다. 어디가 문제였냐면, |
창쓰
/
2017/08/06 13:29:55 /
추천
0
$page = $this -> uri -> segment(5, 1); 이부분이 문제였습니다~
|
창쓰
/
2017/08/06 13:30:11 /
추천
0
3,1 로 바꾸니 바로 적용되더라구요~ 감사합니다~ ㅎㅎ
|
창쓰
/
2017/08/06 13:35:48 /
추천
0
알고보면 엄청 쉬운건데... 이걸 8시간 9시간걸려서 해결했다니..ㅠㅠ 선배님들 도움이 아니였으면 해결하지못했을겁니다. 정말 감사합니다~ ㅎㅎ |
http://www.codeigniter-kr.org/bbs/view/qna?idx=18290&page=2&view_category=&lists_style= 와 동일한 문제로 보이네요.
$config['uri_segment'] = 5; //페이지 번호가 위치한세그먼트 "이 부분이 정말 이해가 안감"
여기에 3이 들어가야합니다.