제목 | stored procedure를 CI상에서 call해서 자료를 페이징 하려하는데 한페이지에 다 나옵니다. 어떻게 구성해야 될까요? | ||
---|---|---|---|
카테고리 | CI 2, 3 | ||
글쓴이 | 하늘을 바라보며 | 작성시각 | 2019/09/26 10:41:22 |
|
|||
* 일반 쿼리문에 $limit, $offset 을 넣듯이 stored procedure 안에 $limit, $offset을 넣어서 페이징을 처리하고 싶습니다.
---- class Board extends CI_Controller ---------- $this->load->library('pagination'); $config['first_url'] = site_url() . '/board/index/page/1?'.http_build_query($_GET); $config['base_url']=site_url() . '/board/index/page'; $config['total_rows']=$this->board_m->getBoards('num_rows', '', '', $idx, $send_phon, $recv_phon, $title_1, $send_how, $recv_how, $send_date, $send_date1, $send_date2, $recv_date, $speck_wait_time, $speck_time, $p_value, $send, $recv); $config['per_page'] = 10; $config['suffix'] = '?'.http_build_query($_GET,'',"&"); $config['suffix']='?'.http_build_query($_GET,'',"&"); 중간생략.. $this->pagination->initialize($config); $data['pagination']=$this->pagination->create_links(); $data['num_rows']=$config['total_rows']; $page = $this->uri->segment(4, 1); if ($page > 1) { $offset=(($page / $config['per_page'])) * $config['per_page']; } else { $offset=($page - 1) * $config['per_page']; } $data['list']=$this->board_m->getBoards('', $offset, $config['per_page'], $idx , $send_phon, $recv_phon, $title_1, $send_how, $recv_how, $send_date, $send_date1, $send_date2, $recv_date, $speck_wait_time, $speck_time, $p_value, $send, $recv, $field, $sort); 생략..
---------------- class Board_m extends CI_Model --------------- function getBoards($kind='', $offset='', $limit='', $idx='', $send_phon='', $recv_phon='', $title_1='', $send_how='', $recv_how='', $send_date='', $send_date1='', $send_date2='', $recv_date='', $speck_wait_time, $speck_time, $p_value, $send, $recv, $field='', $sort='') { //mysql에서 limit는 가져오는 row의 개수, offset은 몇번째 row 부터 가져올지를 결정 if (!isset($field)){ $this->db->order_by($field, $sort); } else { $this->db->order_by($field, $sort); }
$query = $this->db->query("CALL select_intphon_sr($send_date1, $send_date2)"); $this->db->close(); if ($kind == 'num_rows') { $result=$query->num_rows(); } else { $this->db->limit($limit, $offset); $result=$query->result(); } return $result; }
|
|||
첨부파일 |
출력화면.png (59.2 KB) 프로시져내전달값.png (44.3 KB) |
||
다음글 | [게시판]Controller 페이지에서 값 두개 넘기는... (4) | ||
이전글 | Composer + CodeIgniter 구조가 이게 ... (2) | ||
변종원(웅파)
/
2019/09/27 09:55:01 /
추천
0
프로시저 수정하시고 프로시저 파라미터에 $offset, $limit 추가하민 되는데요?
|
하늘을 바라보며
/
2019/09/27 11:15:43 /
추천
0
감사합니다. 파라미터 넣는부분은 이해가 가는데요. 프로시져내에서 받을때 어떻게 구성해야 하나요? 숫자로 고정 시키면됩니다. limit 10 그런데 저는 위에서 만든 $offset, $limit을 받아서 처리하고 싶습니다.
프로시져내용 -- 중생략 end ) a
|
변종원(웅파)
/
2019/09/27 11:54:28 /
추천
0
쿼리는 http://sang12.co.kr/36 참고하세요. ci 질문이 아니고 결론적으로 mysql limit 질문이네요. ^^
https://stackoverflow.com/questions/2875238/passing-limit-as-parameters-to-mysql-sproc |
하늘을 바라보며
/
2019/09/27 15:43:46 /
추천
0
정말 감사드립니다. 모두 해결되었습니다.
|