1

codeigniterその中で ofと classを使用していますが、列を(library) paginationクリックするたびに, .pagination#be counted rows from the beginning

私はこのようにしたい( p = pagination ):

p1-> #-> 1 2 3

p2-> #-> 4 5 6

p3 -> # -> 7 8 9

p4 #-> 10

例: 私の問題の例を参照してください完全なコード
を参照するには、ここにアクセスしてください: 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トップコードの は、この問題に関連しています。

この問題を解決する方法を知っていますか?

4

2 に答える 2

1

$offset現在表示しているページのを取得できますか?
たとえば、1ページにいる場合$offset= 1、2ページに
いる場合$offset= 4(1 +(2ページ-1)* 3)3
ページにいる場合$offset= 7(1 +(3-1ページ) * 3)
など。

現時点でそれを簡単に取得できない場合は、コントローラーから渡すことができるため、ビューは現在のを認識します$offset。次に、コードで、を使用する代わりに、rownumが1から始まるため$row->rownum、現在の$offsetマイナス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
になります。それが理にかなっていることを願っています。

于 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 に答える