2013-05-28 2 views
0

내 검색 결과 페이지에 페이지 매김을 구현하려고합니다. 어제이 질문에 아무런 답변이 없었습니다 Records not limited on searchpage using codeigniter pagination

그리고 제가 지금 가지고있는 문제는 조금 다릅니다.

상황

내 매김 링크가 작동하고 나는이 같은 URL 변경을 참조하십시오 http://example.com/home/searchresults/2 등 (매김의 두 번째 페이지를) 그러나 모든의 SearchResult이 표시됩니다. 한도를 1로 편집하면 링크가 더 많아 지므로 올바르게 작동합니다.

질문

어떤 바보 같은 문제가 될 수 있을까? 나는 내 TOTAL_ROWS

내 컨트롤러와 관련이있다 생각 :

function searchresults() 
    { 
     $this->breadcrumbs->page = array('link'=> base_url().'home/search' ,'title' => 'Bedrijven Zoeken');    
     $this->breadcrumbs->method = array('link'=> base_url().'home/searchresults' ,'title' => 'Zoekresultaten'); 
     $data['breadcrumbs'] = $this->breadcrumbs->get(); 
     $match = $this->input->post('search'); 
     if(strlen($this->input->post('cookie')) > 0){ $match2 = $this->input->post('cookie'); } else{ $match2 = '9101'; } 

     $this->load->library('pagination'); 

     $limit = 4; 
     $offset=($this->uri->segment(3)) ? $this->uri->segment(3) : 0; 
     $config['base_url'] = base_url().'home/searchresults/'; 
     $config['total_rows'] = count($this->bedrijven_model->get_search($match, $match2, $limit, $offset)); 
     $config['per_page'] = $limit; 
     $config['use_page_numbers'] = TRUE; 
     $config['num_links'] = 5; 

     $this->pagination->initialize($config); 
     $offset = $this->uri->segment(3); 
     $data['links'] = $this->pagination->create_links(); 
     //$data['query'] = $this->bedrijven_model->get_search($match, $match2, 2147483647, 0); /*large number as limit to retrieve all the rows*/   
     $data['query_curr'] = $this->bedrijven_model->get_search($match, $match2, $config['per_page'], $this->uri->segment(3)); 
     $this->load->view('views/header'); 
     $this->load->view('views/searchresults', $data); 
     $this->load->view('views/footer'); 
    } 

내 모델 :

function get_search($match, $match2, $limit, $offset=0) 
{ 
    if(!isset($_SESSION)) 
    { 
    session_start(); 
    }; 
    /* 
    $string = implode($_SESSION['postcodes'], '|'); 
    $string2 = $_SESSION['searched_post_code']; 
    */ 
    $postcodes = (is_array($_SESSION['postcodes']) ? $_SESSION['postcodes'] : array()); 
    $postcodes[] = $_SESSION['searched_post_code']; 
    $postcodes = array_filter(filter_var_array($postcodes, FILTER_VALIDATE_INT)); 
    $string = join(',', $postcodes); 

     if (!isset($_COOKIE['cookie'])) { 

      $query = "SELECT * FROM (`bedrijfcategorieen`) 
      JOIN `bedrijven` ON `bedrijfcategorieen`.`idbedrijven` = `bedrijven`.`idbedrijven` 
      JOIN `categorieen` ON `bedrijfcategorieen`.`idcategorieen` = `categorieen`.`idcategorieen` 
      WHERE (`Bedrijfsnaam` LIKE '%".$this->input->post('search')."%' 
      OR `Plaats` LIKE '%".$this->input->post('search')."%' 
      OR `Telefoonnummer` LIKE '%".$this->input->post('search')."%' 
      OR `Email` LIKE '%".$this->input->post('search')."%' 
      OR `Website` LIKE '%".$this->input->post('search')."%' 
      OR `Profiel` LIKE '%".$this->input->post('search')."%' 
      OR `Adres` LIKE '%".$this->input->post('search')."%' 
      OR `Categorie` LIKE '%".$this->input->post('search')."%') 
      AND (Postcode IN ($string)) 

      GROUP BY `Categorie`, `bedrijfcategorieen`.`idbedrijven`"; 
      $query = $this->db->query($query); 
      $this->db->limit($limit, $offset); 
      echo '<pre>'; 
      echo '</pre>'; 
      $result = $query->result_array(); 
      return $result; 
     } 

나는 사람이 좀 도와 수 있기를 바랍니다. 나는 거의 3 시간 동안 이것으로 고투하고있다.

$query = "SELECT * FROM (`bedrijfcategorieen`) 
     JOIN `bedrijven` ON `bedrijfcategorieen`.`idbedrijven` = `bedrijven`.`idbedrijven` 
     JOIN `categorieen` ON `bedrijfcategorieen`.`idcategorieen` = `categorieen`.`idcategorieen` 
     WHERE (`Bedrijfsnaam` LIKE '%".$this->input->post('search')."%' 
     OR `Plaats` LIKE '%".$this->input->post('search')."%' 
     OR `Telefoonnummer` LIKE '%".$this->input->post('search')."%' 
     OR `Email` LIKE '%".$this->input->post('search')."%' 
     OR `Website` LIKE '%".$this->input->post('search')."%' 
     OR `Profiel` LIKE '%".$this->input->post('search')."%' 
     OR `Adres` LIKE '%".$this->input->post('search')."%' 
     OR `Categorie` LIKE '%".$this->input->post('search')."%') 
     AND (Postcode IN ($string)) 
     GROUP BY `Categorie`, `bedrijfcategorieen`.`idbedrijven` 
     LIMIT ".$offset.", ".$limit; 

     $result = $this->db->query($query); 
     return $result->result_array(); 

답변

1

당신은 $query 문자열 내부 오프셋 한도를 /이 필요합니다. 어쨌든,이

$query = "SELECT * FROM (`bedrijfcategorieen`) 
     JOIN `bedrijven` ON `bedrijfcategorieen`.`idbedrijven` = `bedrijven`.`idbedrijven` 
     JOIN `categorieen` ON `bedrijfcategorieen`.`idcategorieen` = `categorieen`.`idcategorieen` 
     WHERE (`Bedrijfsnaam` LIKE '%".$this->input->post('search')."%' 
     OR `Plaats` LIKE '%".$this->input->post('search')."%' 
     OR `Telefoonnummer` LIKE '%".$this->input->post('search')."%' 
     OR `Email` LIKE '%".$this->input->post('search')."%' 
     OR `Website` LIKE '%".$this->input->post('search')."%' 
     OR `Profiel` LIKE '%".$this->input->post('search')."%' 
     OR `Adres` LIKE '%".$this->input->post('search')."%' 
     OR `Categorie` LIKE '%".$this->input->post('search')."%') 
     AND (Postcode IN ($string)) 
     GROUP BY `Categorie`, `bedrijfcategorieen`.`idbedrijven` 
     LIMIT $offset,$limit"; 
     $query = $this->db->query($query); 

한 가지 더에 쿼리를 변경할 필요가 DB->

+0

난이 오류가 http://i.imgur.com/FxmjLVA.png을 제한> $ this-를 사용하지합니다 그냥 봐. –

+0

LIMIT을 GROUP BY 아래에 넣으십시오. 업데이트 된 코드를 참조하십시오. – Mudshark

+0

거의 동일한 오류가 발생했습니다. http://im.imgur.com/6jNQz6J.png –

0

$this->db->limit 활성 레코드와 작동합니다

관련 문제