从数组中输出每一行真实计数器的最佳做法是什么?我有来自数据库的检索用户的对象数组,我回调到<table />
<tbody>
<?php $i = 1;?>
<?php foreach($members as $member):?>
<tr>
<td class="column-counter">
<?php echo $i;?>
</td>
<td class="column-check">
<input type="checkbox" class="checkbox" name="checked[]" value="<?php echo $member->id;?>" <?php if(intval($member->id) === intval($this->session->userdata('login_status')['id'])):?>disabled<?php endif;?>>
</td>
<td class="column-username">
<?php echo $member->username;?>
</td>
<td class="column-email">
<a href="#send-email"><?php echo $member->email;?></a>
</td>
<td class="column-id">
<?php echo $member->id;?>
</td>
</tr>
<?php $i++;?>
<?php endforeach;?>
</tbody>
到目前为止我所做的是每次触发循环时$i =1
递增。
但问题是,如果我转到第二页,它会再次从“1”开始,而不是让我们说21
(如果它每页显示20行)。
如何才能使其正确,以便从上一页的最后一行继续计算?
顺便说一下,如果有帮助,我会使用codeigniter。
====更新====
我在models/members_model.php
中使用的模型controllers/members.php
检索用户认为此功能与分页混合:
public function members($data = array(), $return_count = FALSE){
$this->db
->select('
members.id,
categories.title as role,
members.catid as role_id,
members.firstname,
members.lastname,
members.username,
members.email,
members.status,
members.image
')
->join('categories', 'members.catid = categories.id');
if( empty($data) ){
// If nothing provided, return everything
$this->get_members();
}else{
// Grab the offset
if( !empty($data['page']) ){
$this->db->offset($data['page']);
}
// Grab the limit
if( !empty($data['items']) ){
$this->db->limit($data['items']);
}
if( $return_count ){
return $this->db->count_all_results($this->_table_name);
}else{
return $this->db->get($this->_table_name)->result();
}
}
}
答案 0 :(得分:1)
听起来$data['page']
包含您需要的信息,因为这与指定的偏移有关。您没有在全局范围内引用此数组的名称,因此我将在我的答案中调用此$data_array
。
您可以按如下方式确定$i
的起始值
$i = $data_array['page'] + 1;