rownum а проблема с нумерацией страниц? - PullRequest
1 голос
/ 16 августа 2011

Я использую 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

ПРИМЕР: см. Пример моей проблемы .
Для просмотра полный код перейдите по ссылке: ПОЛНЫЙ КОД

$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 ]

1 голос
/ 16 августа 2011

Просто используйте uri->segment(4). Это должно решить вашу проблему. Разбиение на страницы автоматически изменяет URI и добавляет последний счет вместе с URI. Поэтому, когда вы передаете $this->uri->segment(4). Затем будет использовано последнее возвращенное значение, поэтому при переходе на следующую страницу вы можете получить от 5 и далее.

Так работает пагинация. Так что используйте это:

admin/accommodation/show/(segment 4)
1 голос
/ 16 августа 2011

Можете ли вы получить $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.Я надеюсь, что это имеет смысл.

...