Я создал разбивку на страницы с помощью codeigniter 3. На каждой странице я получаю одинаковые результаты: мой окончательный URL-адрес выглядит следующим образом: http: // localhost / shoping / products / mobile-phones? cid = 3 & page = 2
Файл контроллера:
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; ?>
Вместо $this->uri->segment(2)
используйте $this->input->get('page', TRUE)
.
См. CI_Input :: получите дополнительную информацию о том, как вы можете получить строковые переменные запроса.