2015-02-22 5 views
0

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

У меня есть таблица счетов, которая отображается на моем экране. Я использую PHP для создания таблицы и foreach для сканирования по строкам данных. Что делает его более сложным, так это добавление полей, таких как гиперссылки, такие как «Редактирование и печать». Я все еще на ранних стадиях разработки, но я уже вижу проблему наличия слишком большого количества строк, отображаемых на этой странице. Интересно, что я также добавил некоторые фильтры поиска в таблицу.

Вот код, как я создаю мой стол:

<?php 
echo '<th>Date</th><th>Invoice #</th><th>Customer</th><th>Amount Due</th><th>Total</th><th>Status</th><th>Actions</th>'; 
foreach ($invoices as $a) { 

    if ($a->statusID == 1) 
     $status = '<span value = "'. $a->statusID .'" class="label label-success">PAID</span>'; 
    elseif ($a->statusID == 2) 
     $status = '<span value = "'. $a->statusID .'" class="label label-warning">PARTIAL</span>'; 
    elseif ($a->statusID == 4) 
     $status = '<span value = "'. $a->statusID .'" class="label label-default">SAVED</span>'; 
    elseif ($a->statusID == 5) 
     $status = '<span value = "'. $a->statusID .'" class="label label-danger">OVERDUE</span>'; 

    echo '<tr><td>'.$a->dateCreated.'</td><td>'.$a->invoiceNumber.'</td><td>'.$a->companyName.'</td><td>'.number_format($a->amountDue,2).'</td><td>'.number_format($a->totalAmount,2).'</td><td>'.$status.'</td><td>'; 
    echo '<a data-toggle="tooltip" data-placement="top" data-original-title="Edit" href="invoice_new?id='.$a->invoiceNumber.'" onclick="retrieveInvoice('. $a->invoiceNumber.'); return false;" ><span class="glyphicon glyphicon-edit editButton" aria-hidden="true" style="margin-right:10px;"></span></a>'; 
    echo '<a data-toggle="tooltip" data-placement="top" data-original-title="Add Payment" href="invoice_payment?id='.$a->invoiceNumber.'" ><span class="glyphicon glyphicon-usd" aria-hidden="true" style="margin-right:10px;"></span></a>'; 
    echo '<a data-toggle="tooltip" data-placement="top" data-original-title="Print" href="printing/printInvoice?id='.$a->invoiceNumber.'" target="_blank"><span class="glyphicon glyphicon-print" aria-hidden="true" style="margin-right:10px;"></span></a>';        
    echo '</td>'; 
    echo '</tr>'; 

}?> 

Из того, что я заметил, вы можете создать пагинацию условии, что вы не собираетесь трогать таблицу сгружен из БД. Надеюсь, я ошибаюсь.

Вот изображение моей страницы. Спасибо, что потратили время, чтобы прочитать мою проблему. Извините за мой английский. Ура!

enter image description here

+0

Вы рассмотрели решение js? См. Этот jquery lib, например: http://www.datatables.net/ – AdrienXL

+0

Я изучу его и опубликую некоторые результаты, если я смогу его интегрировать. Спасибо. – DVA

ответ

0

Вы можете попробовать с Codeigniter pagination:

  1. библиотеки Загрузка и помощникам:

    $this->load->library('pagination'); 
    $this->load->helper("url"); 
    
  2. PASS переменные конфигурации, инициализации и создать ссылки:

    $config['base_url'] = 'http://example.com/index.php/test/page/'; 
    $config['total_rows'] = $this->Your_Model->count_all_results();; 
    $config['per_page'] = 10; 
    $config["uri_segment"] = 3; 
    $choice = $config["total_rows"]/$config["per_page"]; 
    $config["num_links"] = round($choice); 
    $this->pagination->initialize($config); 
    $data["links"] = $this->pagination->create_links(); 
    
  3. Вы можете форматировать ссылки с Bootstrap (см эти ответы на Stack Overflow):

    $config['full_tag_open'] = '<ul class="pagination">'; 
    $config['full_tag_close'] = '</ul>';    
    $config['prev_link'] = '&laquo; Previous'; 
    $config['prev_tag_open'] = '<li>'; 
    $config['prev_tag_close'] = '</li>'; 
    $config['next_link'] = 'Next &raquo;'; 
    $config['next_tag_open'] = '<li>'; 
    $config['next_tag_close'] = '</li>'; 
    $config['cur_tag_open'] = '<li class="active"><a href="#">'; 
    $config['cur_tag_close'] = '</a></li>'; 
    $config['num_tag_open'] = '<li>'; 
    $config['num_tag_close'] = '</li>'; 
    
  4. передать переменные модели и ваше мнение:

    $page = ($this->uri->segment(3)) ? $this->uri->segment(3) : 0; 
    $data["rows"] = $this->Your_model->your_function($config["per_page"],$page); 
    $this->load->view('your_view', $data); 
    

Проверьте эти полезные ссылки в SitePoint и FormGet.

Надеюсь, все это поможет!

+0

Спасибо за ответ. Проблема с этим методом заключается в том, что я не думаю, что он может обрабатывать изменение данных таблицы на странице просмотра, например, добавлять столбцы для редактирования и печати. Эта инструкция хороша для данных, поступающих непосредственно из базы данных. – DVA

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