| 제목 | 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
                             정말 감사드립니다. 모두 해결되었습니다. 
 |