Сегодня работаю над очередным проектом, понадобилось сделать постраничный вывод информации, то есть найти пагинатор. Решив не изобретать велосипед, а воспользоваться уже готовым решением я задал этот вопрос Google.
И нашел очень простое решение.
Оно располагается здесь
Вот исходник:
Большое спасибо автору за простой код.
И нашел очень простое решение.
Оно располагается здесь
Вот исходник:
$nums = 10;
if (isset($_GET['page'])) {
$page = intval($_GET['page']);
}
else {
$page = 1;
}
$query = "SELECT COUNT(*) AS `counter`
FROM `table`";
$sql = mysql_query($query) or die(mysql_error());
$row = mysql_fetch_assoc($sql);
$elements = $row['counter'];
$pages = ceil($elements/$nums);
if ($page < 1) {
$page = 1;
}
elseif ($page > $pages) {
$page = $pages;
}
$start = ($page-1)*$nums;
// когда у нас в таблице нет записей
if ($start < 0) $start = 0;
$query = "SELECT *
FROM `table`
LIMIT {$start}, {$nums}";
$sql = mysql_query($query) or die(mysql_error());
while ($row = mysql_fetch_assoc($sql)) {
// здесь выводим наши записи из базы
}
// далее нам надо прицепить листалку
$neighbours = 6;
$left_neighbour = $page - $neighbours;
if ($left_neighbour < 1) $left_neighbour = 1;
$right_neighbour = $page + $neighbours;
if ($right_neighbour > $pages) $right_neighbour = $pages;
if ($page > 1) {
print ' <a href="?page=1">начало</a> ... <a href="?page=' . ($page-1) . '">←сюда</a> ';
}
for ($i=$left_neighbour; $i<=$right_neighbour; $i++) {
if ($i != $page) {
print ' <a href="?page=' . $i . '">' . $i . '</a> ';
}
else {
// выбранная страница
print ' <b>' . $i . '</b> ';
}
}
if ($page < $pages) {
print ' <a href="?page=' . ($page+1) . '">туда→</a> ... <a href="?page=' . $pages . '">конец</a> ';
}
Большое спасибо автору за простой код.
Комментариев нет:
Отправить комментарий