2016-08-07 6 views
0

Я создал пагинацию с CodeIgniter 3. На каждой странице я получаю то же результаты: мой окончательный URL кажется, что: http://localhost/shoping/products/mobile-phones?cid=3&page=2Codeigniter пагинация показывая повторяющиеся записи с строкой запроса страницы

файл контроллер:

public function category(){ 
    $category_id = $this->input->get('cid', TRUE); 
    $slug = $this->uri->segment(2); 
    $sortby = $this->input->get('sort', TRUE); 
    $sorttype= 'ASC'; 
    $limit = 10; 
    $config = array(); 
    $config['base_url'] = base_url() . 'products/'.$slug.'?cid='.$category_id; 
    $config['total_rows'] = $this->Product_model->category_product_count($category_id); 
    $config['per_page'] = $limit; 
    $config['use_page_numbers'] = TRUE; 
    $config['page_query_string'] = TRUE; 
    $config['query_string_segment'] = 'page'; 
    //  $config["uri_segment"] = 3;   
    $config['first_tag_open'] = '<li>'; 
    $config['first_tag_close'] = '</li>'; 
    $config['prev_tag_open'] = '<li>'; 
    $config['prev_tag_close'] = '</li>'; 
    $config['num_tag_open'] = '<li>'; 
    $config['num_tag_close'] = '</li>'; 
    $config['prev_link'] = '«'; 
    $config['next_link'] = '»'; 
    $config['cur_tag_open'] = '<li><a class="current">'; 
    $config['cur_tag_close'] = '</a></li>'; 
    $config['next_tag_open'] = '<li>'; 
    $config['next_tag_close'] = '</li>'; 
    $choice = $config["total_rows"]/$config["per_page"]; 
    $config["num_links"] = round($choice); 
    $this->pagination->initialize($config); 
    if($this->uri->segment(2) > 0){ 
     $page = ($this->uri->segment(2) + 0)*$config['per_page'] - $config['per_page']; 
    } 
    else{ 
     $page = $this->uri->segment(2); 
    } 
    $data["links"] = $this->pagination->create_links(); 
    if($data["links"]!= '') { 
     $data['pagermessage'] = 'Showing '.((($this->pagination->cur_page-1)*$this->pagination->per_page)+1).' to '.($this->pagination->cur_page*$this->pagination->per_page).' of '.$config['total_rows']; 
    } 
    if($this->input->get('sort')=='pricelow'){ 
     $sortby = 'price'; 
     $sorttype= 'ASC'; 
    } 
    elseif($this->input->get('sort')=='pricehigh'){ 
     $sortby = 'price'; 
     $sorttype= 'DESC'; 
    } 
    elseif($this->input->get('sort')=='new'){ 
     $sortby = 'updated_on'; 
     $sorttype= 'DESC'; 
    } 
    elseif($this->input->get('sort')=='popularity'){ 
     $sortby = 'price'; 
     $sorttype= 'DESC'; 
    } 
    else{ 
     $sortby = 'title'; 
     $sorttype= 'ASC'; 
    } 
    //Get all products 
    $data['products_by_category'] = $this->Product_model->get_products_by_category($category_id, $config["per_page"], $page, $sortby, $sorttype); 
    //  echo $config['total_rows']; 
    // Load View 
    $data['main_content'] = 'public/products_category'; 
    $this->load->view('public/layouts/home_main', $data); 
} 

Модель файла:

public function get_products_by_category($category_id, $limit, $start='', $shortby='', $shorttype=''){ 
    $this->db->select('*'); 
    $this->db->where('category_id', $category_id); 
    $this->db->limit($limit, $start); 
    $this->db->order_by($shortby, $shorttype); 
    $query = $this->db->get('products'); 
    if($query->num_rows() > 0){ 
     return $query->result(); 
    }else{ 
     return false; 
    } 
} 

и вид файла:

<?php foreach($products_by_category as $product): ?> 
              <div class="col-sm-4 col-md-4 col-lg-3"> 
               <div class="single-product" style="height:300px;margin-bottom:10px"> 
                <span class="sale-on">sale</span> 
                <div class="product-image"> 
                 <div class="show-img"> 
                  <a href="<?php echo base_url();?><?php echo $product->slug.'?sid='.$product->id;?>"> 
                   <img src="<?php echo base_url(); ?>assets/images/products/<?php echo $product->image;?>" alt="<?php echo $product->title;?>" height="150" width="150"> 
                  </a> 
                 </div> 
                </div> 
                <div class="prod-info"> 
                 <h2 class="pro-name"> 
                  <a href="<?php echo base_url();?><?php echo $product->slug.'?sid='.$product->id;?>"><?php echo $product->title.$product->id;?></a> 
                 </h2><br> 
                 <div class="price-box"> 
                  <div class="price"> 
                   <span><i class="fa fa-inr"></i><?php echo $product->price;?></span> 
                  </div> 
                  <div class="old-price"> 
                   <span><i class="fa fa-inr"></i><?php echo $product->mrp_price;?></span> 
                  </div> 
                 </div> 
                 <div class="actions"> 
                  <span class="new-pro-wish"> 
                   <a href="#" data-toggle="tooltip" title="Add to wishlist"><i class="fa fa-heart-o"></i></a> 
                  </span> 
                  <span class="new-pro-compaire"> 
                   <a href="#" data-toggle="tooltip" title="Add to compare"><i class="fa fa-bar-chart"></i></a> 
                  </span> 
                 </div> 
                </div> 
               </div> 
              </div> 
              <?php endforeach; ?> 

ответ

0

Вместо $this->uri->segment(2) использовать $this->input->get('page', TRUE).

См. CI_Input::get для получения дополнительной информации о том, как вы можете получить переменные строки запроса.

+0

Спасибо tushar. это была большая боль. – Vikas

+0

Я вижу, что вы правильно получали идентификатор категории $ this-> input-> get ('cid', TRUE) '. –