1

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

我想要这样(p = pagination):

p1-> #-> 1 2 3

p2-> #-> 4 5 6

p3 -> #-> 7 8 9

p4 #-> 10

示例: 请参阅我的问题示例
要查看完整代码,请转到此处:完整代码

$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顶部代码中与此问题有关。

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

4

2 回答 2

1

你能检索到$offset你当前所在的页面吗?
就像我在第 1 页,$offset= 1,
如果我在第 2 页,$offset= 4 (1 + (page 2 - 1) * 3)
如果我在第 3 页,$offset= 7 (1 + (page 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+4-1) 4、(2+4-1) 5、(3+4-1) 6,而不是 1、2、3 等。
我希望这是有道理的。

于 2011-08-15T23:51:52.763 回答
1

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

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

admin/accommodation/show/(segment 4)
于 2011-08-16T00:31:23.940 回答