2015-10-31 4 views
1

Я новичок в codeigniter. У меня проблема с разбиением на страницы с кодом. Я попытался найти документацию Google, youtube и codeigniter, но ничего не нашел. Я могу реализовать простую разбивку на страницы, но мне нужно создать многостраничную разбивку с базой данных в одной таблице.Как сделать разбиение на страницы с помощью кодировщика базы данных?

Кто-нибудь, кто может мне помочь?

Моя база данных:

product: 
id category title image 
1 burger a  a.jpg 
2 burger b  b.jpg 
3 burger c  c.jpg 
4 pizza d  d.jpg 
5 pizza e  e.jpg 
6 pizza f  f.jpg 

Результат, который я хочу нумерацией страниц на одной странице (пагинацией категории гамбургер на гамбургер, пицца пиццей)

и мой URL является http://localhost/test-ci1/

код в Model:

<?php 
class Product_model extends CI_Model { 
    function get_burgers($category="", $limit, $start) { 
     $this->db->select('*'); 
     $this->db->from('product'); 

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

    function get_total($category="") { 
     $this->db->select('count(*) AS num_row'); 
     $this->db->from('product'); 

     if($category) { 
      $this->db->where('category',$category); 
     } 
     $this->db->limit(1); 
     $query = $this->db->get(); 
     return $query->row()->num_row; 
    } 
} 

в Controller:

 <?php 
class Site extends CI_Controller { 

    public function __construct() 
    { 
     parent::__construct(); 
     $this->load->model('product_model','product'); 
    } 

    public function index() 
    { 
     $this->load->model('Product_model'); 
     $page = ($this->uri->segment(3)) ? $this->uri->segment(3) : 0; 
     $data = array(); 
     $per_page =2; 
     $data["pizza"] = $this->product->get_burgers('pizza', $per_page, $page); 
     $total_pizza = $this->product->get_total('pizza'); 
     $limit= 2; 
     $link_pizza = 'http://localhost/test-ci1/pizza'; 
     $data['pagination_pizza'] = $this->pagination($total_pizza,$limit,$link_pizza); 

     $data["burgers"] = $this->product->get_burgers('burger', $per_page, $page); 
     $total_burger = $this->product->get_total('burger'); 
     $limit = 2; 
     $link_burger = 'http://localhost/test-ci1/index/burger'; 
     $data['pagination_burger'] = $this->pagination($total_burger,$limit,$link_burger); 

     $this->load->view('home_page_view',$data); 
    } 

    private function pagination($total ,$per_page ,$link) { 

     $config['base_url'] = $link; 
     $config['total_rows'] = $total; 
     $config['per_page'] = $per_page; 
     $config['page_query_string'] = TRUE; 

     $this->pagination->initialize($config); 

     return $this->pagination->create_links(); 
    } 

} 

и в моем View:

<body> 

<h1>Pizza</h1> 
<ul> 
    <?php foreach($pizza as $val) { ?> 
     <li><?php echo $val->title; ?></li> 
    <?php } ?> 
</ul> 

<?php echo $pagination_pizza; ?> 
<hr> 

<h1>Burger</h1> 
<ul> 
    <?php foreach($burgers as $val) { ?> 
     <li><?php echo $val->title; ?></li> 
    <?php } ?> 
</ul> 

<?php echo $pagination_burger; ?> 

</body> 

и мой результат:

Pizza 

    pizza1 
    burger2 

12> 
Burger 

    burger1 
    assasa 

12> 
+0

Какой html ваш foreach на выходах вида? Можете ли вы изменить свой вопрос, чтобы добавить это? Скорее всего, ошибка на html, которая выводит ther – sotoz

+0

ok Я отредактирую сейчас wait – user307709

+0

Теперь я уже редактирую – user307709

ответ

1

Как я вижу, вы не разработали модель своего пагинацию. Вы должны добавить функцию, которая выполняет разбиение на страницы, пока вы извлекаете только нужные строки из базы данных.

Для примера что-то подобное в вашей модели будет делать:

function get_burgers($category="", $limit, $start) { 
     $this->db->select('*'); 
     $this->db->from('product'); 

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

И в контроллере вместо извлечения только один гамбургера вы должны

$data["burgers"] = $this->burger_model->get_burgers($category, $config["per_page"], $page); 

И изменить Еогеасп в вашей цели итерация через burgers

+0

Ok tz брата сейчас я буду проверять код ur сейчас – user307709

+0

Привет, брат, я стараюсь следить за кодом ur, но все еще имеет ошибку. U может видеть мой код обновления ur. – user307709

+0

Массив '$ config' не отображается вне вашей функции разбиения на страницы. Попробуйте добавить его как переменную класса с 'protected $ config' сразу после объявления класса, а затем использовать его везде с' $ this-> config'. Или вы можете использовать другую переменную для 'per_page', назначенной для вашей индексной функции. – sotoz

Смежные вопросы