CI 묻고 답하기

제목 검색기능시에 url은 변경되지만, 검색한 조건에 있는 데이터를 못 불러올때
카테고리 CI 2, 3
글쓴이 창쓰 작성시각 2017/08/29 13:44:25
댓글 : 3 추천 : 0 스크랩 : 0 조회수 : 14098   RSS

현재 영문으로 검색하거나, 한글로 검색해도 동일한 증상이 나타납니다.

늘 도움을 주셔서 감사합니다.

 

/** 모델 **/
function get_list($table = 'bookingdb', $type = '', $offset = '', $limit = '', $search_word = '') {

         $sword = '';

         if ($search_word != '') {
             // 검색어 있을 경우
             $sword = ' WHERE subject like "%' . $search_word . '%" or contents like "%' . $search_word . '%" ';
         }

         $limit_query = '';

         if ($limit != '' OR $offset != '') {
             // 페이징이 있을 경우 처리
             $limit_query = ' LIMIT ' . $offset . ', ' . $limit;
         }

         $sql = "SELECT * FROM " . $table . $sword . " ORDER BY id DESC " . $limit_query;
         $query = $this -> db -> query($sql);

         if ($type == 'count') {
             $result = $query -> num_rows();
         } else {
             $result = $query -> result();
         }

         return $result;
     }

/** 컨트롤러 **/
// 검색어 초기화
        $search_word = $page_url = '';
        $uri_segment = 5;

        // 주소 중에서 q(검색어) 세그먼트가 있는 지 검사하기 위해 주소를 배열로 반환
        $uri_array = $this -> segment_explode($this -> uri -> uri_string());

        if (in_array('q', $uri_array)) {
            // 주소에 검색어가 있을 경우 처리
            $search_word = urldecode($this -> url_explode($uri_array, 'q'));

            // 페이지네이션 용 주소
            $page_url = '/q/' . $search_word;

            $uri_segment = 7;
        }
		$this->load->library('pagination');
		//페이지네이션 설정
		$config['base_url'] = '/index.php/write/lists/bookingdb' . $page_url . '/page/';//페이징주소
		$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($uri_segment, 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');

/** 스크립트 **/
<script>
           $(document).ready(function() {
               $("#search_btn").click(function() {
                   if ($("#q").val() == '') {
                       alert("검색어를 입력하세요!");
                       return false;
                   } else {
                       var act = "/index.php/write/lists/bookingdb/q/" + $("#q").val() + "/page/1";
                       $("#bd_search").attr('action', act).submit();
                   }
               });
           });

           function board_search_enter(form) {
               var keycode = window.event.keyCode;
               if (keycode == 13)
                   $("#search_btn").click();
           }
      </script>

 

 다음글 안녕하세여...셀렉트 조회 질문... (3)
 이전글 session 만료 후 초기화면에 관한 질문 (7)

댓글

kaido / 2017/08/29 14:51:14 / 추천 0

위에도 페이지가 1이고 밑에도 페이지가 1번이니 정상인것 같습니다.

CI 페이징은 값이 없으면 1번으로 취급 합니다.

네비에서 2번을 눌러도 2번으로 넘어가지 않는다면 link 설정이 잘못 되었을 것입니다.

/page/2 으로 변경해 보세요.

배강민 / 2017/08/29 15:23:08 / 추천 0

모델 메서드는

function get_list($table = 'bookingdb', $type = '', $offset = '', $limit = '', $search_word = '')

사용은

$data['list'] = $this -> write_model -> get_list($this -> uri -> segment(3), '', $start, $limit);

뭐가 빠졌는지 보이셔야합니다.

창쓰 / 2017/08/29 17:30:53 / 추천 0

@kaido님 답변감사합니다

@배강민님 정말 감사합니다. 덕분에 해결됬습니다.

매번 물어볼때마다 답해주시고, 답을 해결할수있는 능력을 길러주셔서 감사합니다.

더 많이 배우고 더 많이 노력해서 다른분들을 도울수있도록 노력하겠습니다. 늘 고맙습니다.