2017-07-17 65 views
0

在我的Db中有大约1000条记录。 搜索查询显示我的搜索结果页面中的分页结果,但是当我进入第2页,第3页等时...它不会显示任何内容。它给了我一个消息说没有找到记录。 我错过了与相对URI有关的事情吗?或者是别的什么 ?Codeigniter分页(第一页发布后)

控制器 - college_search.php

public function index() 
{ 

    $param = str_replace('-',' ', $this->uri->segment(2)); 
    $param = strip_tags($param); 

    $param2 = str_replace('-',' ', $this->uri->segment(3)); 
    $param2 = strip_tags($param2); 

    $data['msg'] = ''; 

    //Pagination starts 
    $total_rows = $this->posted_colleges_model->count_searched_job_records($param,$param2); 
    $config = pagination_configuration(base_url("search-college/".$this->uri->segment(2)), $total_rows, 50, 3, 5, true); 
    $this->pagination->initialize($config); 
    $page = ($this->uri->segment(2)) ? $this->uri->segment(3) : 0; 
    $page_num = $page-1; 
    $page_num = ($page_num<0)?'0':$page_num; 
    $page = $page_num*$config["per_page"]; 
    $data["links"] = $this->pagination->create_links(); 
    $data['total_rows'] = $total_rows; 
    $data['page'] = $current_records; 
    $data['from_record'] = $page+1; 
    $data['result'] = $obj_result; 
    $data['param'] = $param; 
    $data['param2'] = $param2; 
    //Pagination ends 

    $obj_result = $this->posted_colleges_model->get_searched_colleges($param,$param2, $config["per_page"], $page); 

模型 - posted_colleges_model.php

public function count_searched_job_records($param,$param2) { 
     $Q = $this->db->query('CALL count_ft_searched_colleges("'.$param.'","'.$param2.'")'); 
     if ($Q->num_rows > 0) { 
      $return = $Q->row('total'); 
     } else { 
      $return = 0; 
     } 
     $Q->next_result(); 
     $Q->free_result(); 
     return $return; 

    } 

public function get_searched_colleges($param,$param2='', $per_page, $page) {   
     $Q = $this->db->query('CALL ft_search_job2("'.$param.'", "'.$param2.'", '.$page.', '.$per_page.')'); 
     if ($Q->num_rows > 0) { 
      $return = $Q->result(); 
     } else { 
      $return = 0; 
     } 
     $Q->next_result(); 
     $Q->free_result(); 
     return $return; 

过程1 count_ft_searched_colleges

BEGIN 
    SELECT COUNT(pc.ID) as total 
    FROM `pp_companies` pc 
    WHERE pc.sts = 'active' 

AND (
     pc.company_name like CONCAT("%",param,"%") 
     OR pc.company_city like CONCAT("%",param,"%") 
     OR pc.company_location like CONCAT("%",param,"%") 
     OR pc.company_state like CONCAT("%",param,"%") 
     OR pc.category1 like CONCAT("%",param,"%") 
     OR pc.category2 like CONCAT("%",param,"%") 
     OR pc.category3 like CONCAT("%",param,"%") 

    ) 
AND pc.company_city like CONCAT("%",param2,"%"); 
END 

过程2 ft_search_job2

BEGIN 

    SELECT pc.ID, pc.company_name, pc.company_logo, pc.company_slug, pc.sts,pc.company_location,pc.company_city,pc.company_state,pc.category1,pc.category2,pc.category3 
    FROM `pp_companies` pc 
    WHERE pc.sts = 'active' 
    AND (
     pc.company_name like CONCAT("%",param,"%") 
     OR pc.company_city like CONCAT("%",param,"%") 
     OR pc.company_location like CONCAT("%",param,"%") 
     OR pc.company_state like CONCAT("%",param,"%") 
     OR pc.category1 like CONCAT("%",param,"%") 
     OR pc.category2 like CONCAT("%",param,"%") 
     OR pc.category3 like CONCAT("%",param,"%") 

     ) 
     AND (pc.company_city) like CONCAT("%",param2,"%") 
ORDER BY pc.ID DESC 
    LIMIT from_limit, to_limit; 
END 

视图 - college_search_view.php

<div class="searchjoblist col-md-<?php echo $col;?>"> 
<div class="paginationWrap"> <?php echo ($result)?$links:'';?> </div> 

    <!--Colleges List--> 

    <div class="searchpage"> 
    <div class="toptitlebar"> 
     <div class="row"> 
     <div class="col-md-6"><b><?php echo $param;?> Colleges</b></div> 
     <div class="col-md-6 text-right"><strong>Colleges <?php echo $from_record.' - '.$page;?> of <?php echo $total_rows;?></strong> </div> 
     </div> 
    </div> 

    <ul class="searchlist"> 
    <!--Colleges Row--> 

     <?php if($result): 
    $CI =& get_instance(); 
         foreach($result as $row): 
          $company_logo = ($row->company_logo)?$row->company_logo:'no_logo.jpg'; 
          $is_already_applied = $CI->is_already_applied_for_job($this->session->userdata('user_id'), $row->ID);  
       ?> 
     <li> 
     <div class="row"> 
      <div class="col-md-2"><a href="<?php echo base_url('company/'.$row->company_slug);?>" class="thumbnail" title="<?php echo $row->job_title;?>"><img src="<?php echo base_url('public/uploads/employer/thumb/college-logos/'.$company_logo);?>" alt="<?php echo base_url('company/'.$row->company_slug);?>" /></a></div> 
      <div class="col-md-10"> 
       <div class="col-md-7"> <a href="<?php echo base_url('company/'.$row->company_slug);?>" class="jobtitle" title="View details about <?php echo $row->company_name;?>"><?php echo $row->company_name;?></a> 
       <div class="location"><?php echo $row->company_location;?></div> 

      </div> 
      <div class="col-md-5"> 
       <?php 
      if($is_already_applied=='yes'): 
      ?> 
       <a href="javascript:;" class="applybtngray">Already Applied</a> 
       <?php else:?> 
       <a href="<?php echo base_url('company/'.$row->company_slug);?>" class="applybtn">More Details</a> 
       <?php endif;?> 

      </div> 
      <div class="clearfix"> </div>    
      </div>    
     </div> 
     <p><?php echo word_limiter(strip_tags(str_replace('-',' ',$row->company_description)),22);?></p> 
     </li> 
     <?php endforeach; else: ?> 
     <div class="err" align="center"> 
     <p><strong> <?php echo ($param=='')?'Please enter keywords above to display the relevant opened jobs.':'Sorry, no record found';?> </strong></p> 
     </div> 
     <?php endif;?> 
    </ul> 
    </div> 

    <!--Pagination--> 

    <div class="paginationWrap"> <?php echo ($result)?$links:'';?> </div> 
</div> 

routes.php文件

$route['search-college'] = 'college_search/index/$1'; 
$route['search-college/(:any)'] = 'college_search/index/$1'; 
+0

如何计算from_limit和to_limit?您是否能够记录查询并查看实际正在查询的内容? – Nick

+0

记录查询时一直有问题,请您指点我正确的方向?如果我应该使用print_r或last_query? –

+0

from_limit和to_limit只是INT值/程序中'5'的长度。 –

回答

0

更新

尝试使用设置分页

$config['base_url'] = base_url('search-college'); 
    //assuming example.com/search-college/[PAGE_NUMBER] 

$config['total_rows'] = 200; 
$config['uri_segment'] = 2; 
    //assuming example.com/search-college/[PAGE_NUMBER] 

$config['num_links'] = 5; 
$config['use_page_numbers'] = true; 
$config['total_rows'] = $total_rows; 
$config['per_page'] = 50; 

$this->pagination->initialize($config); 
更标准的方式

原来的答案

从你的代码张贴以上,似乎有一些计算丢失的逻辑您的ft_search_job2过程的from_limit和to_limit。

要获得分页工作正常,使用程序(你应该尝试使用CodeIgniter的查询生成器),计算偏移这样的:

from_limit = $page*$per_page 

这是假设在页面0索引,并且不从1开始

+0

from_limit = $ page * $ per_page,这应该添加在控制器中吗? –

+0

是的,它应该是,然后在'CALL' – Nick

+0

我试图做同样的使用在from_limit参数,但页面不想要加载后,不知道我在做正确的事:'D –