rownum和分页问题?

时间:2011-08-15 23:28:21

标签: php codeigniter count rownum

我在其中使用codeigniter和类(library) pagination,为什么每次点击pagination#be counted rows from the beginning

我希望喜欢这个(p =分页):

  

P1-> # - > 1 2 3

     

P2-> # - > 4 5 6

     

p3 - > # - > 7 8 9

     

p4# - > 10

示例: see example of my problem 要查看完整代码,请转到此处:FULL CODE

$data['results'] = $this->db->query("SELECT @rownum:=@rownum+1 rownum, t.*
    FROM (
        SELECT *
        FROM hotel_submits
        ORDER BY id desc
        LIMIT $offset, 3    
    ) t,
    (SELECT @rownum:=0) r");
顶部代码中的

Rownum与此问题相关联。

你知道如何解决这个问题吗?

2 个答案:

答案 0 :(得分:1)

您可以检索当前所在页面的$offset吗? 就像我在第1页,$offset = 1,
如果我在第2页,$offset = 4(1 +(第2 - 1)页* 3)
如果我在第3页,$offset = 7(1 +(第3 - 1)页* 3)
等。

如果您目前无法轻易获得该信息,则可以从控制器中传递它,以便您的视图了解当前的$offset。 然后在代码中,而不是使用$row->rownum,添加当前$offset的值减去1,因为rownum从1开始。

foreach ($results->result() as $row)
{
    echo    '<tr><td><input type="checkbox" name="remember_me" value="true" ></td>';
    // echo    '<td>'.$row->rownum.'</td>';
    echo    '<td>'.intval($row->rownum + $offset - 1).'</td>';
    echo    '<td>'.$row->type.'</td>';
    echo    '<td>'.$row->name.'</td>';
    echo    '<td>'.$row->star.' - '.$row->type_star.'</td>';                                
    echo    '<td><span id="'.$row->address.'" class="tooltip">'.$row->address.'</span></td>';
    echo    '<td><span id="'.$row->number_phone.'" class="tooltip">'.$row->number_phone.'</span></td>';
    echo    '<td>'.$row->fax.'</td>';
    echo    '<td>'.$row->site.'</td>';
    echo    '<td>'.$row->email.'</td>';
    echo    '<td>'.$row->date.'</td></tr>';
}

所以在第2页,而不是1,2,3等,它应该是(1 + 4-1)4,(2 + 4-1)5,(3 + 4-1)6。
我希望这是有道理的。

答案 1 :(得分:1)

只需使用uri->segment(4)即可。它应该解决你的问题。分页自动更改URI并将最后一个计数与URI一起追加。所以当你通过$this->uri->segment(4)时。然后,这将返回最后返回的值,因此当您移动到下一页时,您可以从5开始。

这就是分页的工作原理。所以使用这个:

admin/accommodation/show/(segment 4)