2015-07-06 41 views
6

我正在使用分页搜索结果。搜索正在发生完美。搜索后显示前10条记录。但是当我点击下一个按钮时,一切都消失了,空白页面就在那里。codeIgniter分页 - 不会转到搜索结果的下一个链接

如果有人有一个想法,请帮我弄清楚我的代码中有什么问题。

模型

function search_bookings($time, $title, $payment, $start_date, $end_date,$limit, $start, $type) { 

     $this->db->select('reservations.*'); 
     $this->db->from('reservations'); 
     $this->db->where('is_deleted', '0'); 
     $this->db->order_by('date_cal',"desc"); 

     if (!empty($time) && !is_null($time)) { 
      $this->db->where('reservations.type', $time); 
     } 
     if (!empty($payment) && !is_null($payment)) { 
      $this->db->where('reservations.advanced_payment_status', $payment); 
     } 

     if (!empty($title) && !is_null($title)) { 
      $this->db->where('reservations.title', $title); 
     } 

     if (!empty($start_date) && !is_null($start_date)) { 
      $this->db->where('reservations.date_cal >=', $start_date); 
      $this->db->where('reservations.date_cal <=', $end_date); 
     } 

     if ($type == 'half') { 
      $this->db->limit($limit, $start); 
     } 
     $query = $this->db->get(); 
     return $query->result(); 
    } 

控制器

function search_reservations($start = 0) { 
     $reservation_service = new Reservation_service(); 
     $config = array(); 

     $config["base_url"] = site_url() . "/dashboard/manage_bookings/"; 
     $config["per_page"] = 10; 
     $config["uri_segment"] = 4; 
     $config["num_links"] = 4; 

     $time = $this->input->post('type', TRUE); 
     $title = $this->input->post('title', TRUE); 
     $payment = $this->input->post('payment', TRUE); 
     $date_from = $this->input->post('date_from', TRUE); 
     $date_to = $this->input->post('date_to', TRUE); 
     $searched_results = $reservation_service->search_bookings($time, $title, $payment, $date_from, $date_to, $config["per_page"], $start, 'half'); 
     $data['search_results'] = $searched_results; 
     $config["total_rows"] = count($reservation_service->search_bookings($time, $title, $payment, $date_from, $date_to, $config["per_page"], 0, 'all')); 
     $this->pagination->initialize($config); 

     $data["links"] = $this->pagination->create_links(); 

     $this->load->view('body_pages/search_results', $data); 
    } 

的搜索结果视图

<table class="display table table-bordered table-striped" id="bookings_table"> 
    <thead> 
     <tr> 
      <th>#</th> 
      <th>Date</th> 
      <th>Hall</th> 
      <th>Time</th>        
      <th>Actions</th> 
     </tr> 
    </thead> 
    <tbody> 
     <?php 
     $i = 0; 
     foreach ($search_results as $result) { 
      ?> 
      <tr id="bookings_<?php echo $result->id; ?>"> 
       <td><?php echo ++$i; ?></td> 
       <td><?php echo $result->date_cal; ?></td> 
       <td><?php if ("RP" == $result->title) { ?><?php 
         echo "Royal Princess Ballroom (Downstairs)"; 
        } 
        ?> 
        <?php if ("GK" == $result->title) { ?><?php 
         echo "Grand Kings Ballroom (Upstairs)"; 
        } 
        ?> 
       </td> 
       <td><?php echo $result->type; ?></td> 
       <td align="center">  
        <a class="btn btn-primary btn-xs" onclick="display_edit_reservation_pop_up(<?php echo $result->id; ?>)"><i class="fa fa-pencil" title="Update"></i></a> 
        <a class="btn btn-danger btn-xs" onclick="delete_bookings(<?php echo $result->id; ?>)" ><i class="fa fa-trash-o " title="Remove"></i></a> 
       </td> 
      </tr> 
     <?php } ?> 

    </tbody> 

</table> 

<div class="pagination"> 
    <?php echo $links; ?> 
</div>           
+0

'$ config [“uri_segment”] = 2;' –

+0

@Abdulla它没有为我工作。 – Stell

+0

'$ config [“uri_segment”] = 3;'试试这个 –

回答

0

嘿,请喜找到分页类

/* start code of pagination */ 
     $config      = array(); 
     $config["base_url"]   = base_url()."cms/manage_cms"; 
     if (count($_GET) > 0) $config['suffix'] = '?' . http_build_query($_GET, '', "&"); 
     if (count($_GET) > 0) $config['first_url'] = $config['base_url'].'?'.http_build_query($_GET); 
     $page = ($this->uri->segment(3)) ? $this->uri->segment(3) : 0; 
     //$page = 0; 
     $config["total_rows"]  = count($this->mdl_cms->getAllCmsByCondition($searchindex,$orderField,$orderby,$rowsPerPage,$page,false)); 

     if($config["total_rows"] < $rowsPerPage){ 
      $page = 0; 
     } 
     $config["per_page"]   = $rowsPerPage; 
     //$config["uri_segment"]  = 3; 
     $config['full_tag_open'] = '<div class="pagination"><ul>'; 
     $config['full_tag_close'] = '</ul></div><!--pagination-->'; 

     $config['first_link'] = '&laquo; First'; 
     $config['first_tag_open'] = '<li class="prev page">'; 
     $config['first_tag_close'] = '</li>'; 

     $config['last_link'] = 'Last &raquo;'; 
     $config['last_tag_open'] = '<li class="next page">'; 
     $config['last_tag_close'] = '</li>'; 

     $config['next_link'] = 'Next &rarr;'; 
     $config['next_tag_open'] = '<li class="next page">'; 
     $config['next_tag_close'] = '</li>'; 

     $config['prev_link'] = '&larr; Previous'; 
     $config['prev_tag_open'] = '<li class="prev page">'; 
     $config['prev_tag_close'] = '</li>'; 

     $config['cur_tag_open']  = '<li class="active"><a href="">'; 
     $config['cur_tag_close'] = '</a></li>'; 
     $config['num_tag_open']  = '<li class="page">'; 
     $config['num_tag_close'] = '</li>'; 

     $this->pagination->initialize($config); // Load pagination class 


     $usersArr = $this->mdl_cms->getAllCmsByCondition($searchindex,$orderField,$orderby,$rowsPerPage,$page,true); 
     //echo $this->db->last_query(); //die; 
     $data["links"] = $this->pagination->create_links(); // Create pagination links 

希望它会为你工作

+0

我会试试这个。谢谢 – Stell

0

你正在服用的$时,$标题,$支付低于控制器代码, $ date_from,$ date_to来自POST的变量。

的paginiation环节都喜欢 - 家用/ search_reservations/2

一旦那些从后搜索数据丢失的链接用户点击。如果您希望它们影响所有页面,则需要将搜索参数保留在记录中。

2种方法可以做到这一点 -

1)使用GET而不是POST。将您的搜索参数保留在生成的分页链接的查询字符串中。这样所有的页面都会有搜索参数。如果您想共享/书签搜索结果的特定页面,这也很有用。例如,您的页面将链接,如 -

www.yoursite.com/home/search_reservations/2?time=123&title=123&payment=123&date_from=123&date_to=123 

2)在会话中保留搜索参数。代码中很多乱七八糟,但在URL中更漂亮。