2014-01-14 3 views
0

Я использую CodeIgniter Pagination class для разбивки моих данных на 10 строк на страницу. Я использую foreach loop для этого.Приращение оператора в петле forach для разбивки на страницы

Моя проблема заключается в том, что оператор инкрементирования цикла сбрасывается обратно на 1 во втором, третьем & следующих страницах разбиения на страницы.

Страница 1 кадр [фиктивные данные только]: dummy data only

Страница 2 кадр [фиктивные данные только]: dummy data only

Страница 3 кадр [фиктивные данные только]: dummy data only

Мои контроллер:

<?php 

class Mypagination extends CI_Controller{ 
    function index(){ 

     $this->load->database(); 
     $this->load->library('pagination'); 

     $config['base_url'] = '/codeigniter/index.php/mypagination/index/'; 
     $config['total_rows'] = $this->db->get('tracking')->num_rows(); 
     $config['per_page'] = 10; 

     $config['next_link'] = 'Next'; 
     $this->pagination->initialize($config); 

     $data['query'] = $this->db->get('tracking', $config['per_page'], $this->uri->segment(3)); 
     $this->load->view('mypagination_view', $data); 

    } 
} 

Мое мнение:

<?php 

$i = 1; 

foreach($query->result() as $row){ 
    echo $i++ . ') '; 
echo $row->name . ' - ' . $row->email; 
echo '<br>'; 
} 

echo $this->pagination->create_links(); 

?> 

Я хочу, чтобы увеличивающиеся оператор продолжать в следующих постраничной страницах, как 11,12,13 ... на второй странице. 21,22,23 на третьей странице ...

Как это исправить?

Извините, если это слишком простой вопрос. Я просто знаком с CodeIgniter и PHP.

ответ

1

На ваш взгляд:

$links = $this->pagination->create_links(); 
$i = 1 + $this->pagination->cur_page*$this->pagination->per_page; 

foreach($query->result() as $row){ 
    echo $i++ . ') '; 
    echo $row->name . ' - ' . $row->email; 
    echo '<br>'; 
} 

echo $links; 

и ты крут.

Кроме того, я бы рекомендовал использовать меньше эха и только для частей php вашего шаблона. Например, ваш код может быть переформатирован следующим образом:

<?php $links = $this->pagination->get_links(); ?> 

<ol start="<?php echo 1 + $this->pagination->cur_page*$this->pagination->per_page; ?>" > 
<?php foreach($query->result() as $row) : ?> 
    <li><?php echo $row->name . ' - ' . $row->email; ?></li> 
<?php endforeach; ?> 
</ol> 

<?php echo $links; ?> 

Выглядит теперь чище, я думаю.

+0

Спасибо. Но $ i = 1 + $ this-> pagination-> cur_page * $ this-> pagination-> per_page; не работал для меня @ Андрей Почекуев. –

+0

Отредактировано. Должен работать сейчас. Проблема заключалась в том, что разбиение на страницы не получило свою текущую страницу, пока вы не используете метод 'create_links()'. – Eternal1

+0

Теперь я получаю это для своей первой страницы http://i.imgur.com/NIv9huF.jpg –

0

Вы используете сеансы? Возможно, что-то вроде этого:

<?php 

$i = $this->session->userdata('increment') ? $this->session->userdata('increment') : 1; 

foreach($query->result() as $row){ 
    echo $i++ . ') '; 
    echo $row->name . ' - ' . $row->email; 
    echo '<br>'; 
} 

echo $this->pagination->create_links(); 
$this->session->set_userdata('increment', $i); 

?> 
+0

@ Mudshark Я не использую сеанс. –

+0

@zulhfreelancer вы можете загрузить его только для функции 'index()' ... – Mudshark

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