rownum а проблема с нумерацией страниц?
Я использую codeigniter
и класс (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
ПРИМЕР: см. Пример моей проблемы.
Для просмотра полного кода перейдите по ссылке: ПОЛНЫЙ КОД
$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 ответа
Можете ли вы получить $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.
Я надеюсь, что в этом есть смысл.
Просто используйте uri->segment(4)
, Это должно решить вашу проблему. Разбиение на страницы автоматически изменяет URI и добавляет последний счет вместе с URI. Поэтому, когда вы проходите $this->uri->segment(4)
, Тогда это будет принимать последнее возвращаемое значение, поэтому при переходе на следующую страницу вы можете получить от 5 и далее.
Так работает пагинация. Так что используйте это:
admin/accommodation/show/(segment 4)