PHP/MySQL | Пагинация в PHP и все-все-все:D
Тема закрыта by
CreepMatis
Причина: Решено!
![](https://bym.guru/files/icon/14212.png)
Причина: Решено!
Крч, возникла новая беда, на этот раз с пагинацией.
P.S. Для тех, кто не в танке: пагинация - это постраничная навигация:D
Так вот, кол-во страниц высчитывает, первые 10 постов выводит, но! Когда жмёшь на вторую страницу - просто обновляется страница) Посты остаются те же.
Вопрос - в чём беда? Ниже прилагаю код функции пагинации и страницу, где она применяется.
Код функции:
Код страницы:
P.S. Для тех, кто не в танке: пагинация - это постраничная навигация:D
Так вот, кол-во страниц высчитывает, первые 10 постов выводит, но! Когда жмёшь на вторую страницу - просто обновляется страница) Посты остаются те же.
Вопрос - в чём беда? Ниже прилагаю код функции пагинации и страницу, где она применяется.
Код функции:
function pagination($all, $lim, $prev, $curr_link ,$curr_css, $link)
{
// осуществляем проверку, чтобы выводимые первая и последняя страницы
// не вышли за границы нумерации
$first = $curr_link - $prev;
if ($first < 1) $first = 1;
$last = $curr_link + $prev;
if ($last > ceil($all/$lim)) $last = ceil($all/$lim);
// начало вывода нумерации
// выводим первую страницу
$y = 1;
if ($first > 1) echo "<a href='{$link}?page={$y}'>1</a> ";
// Если текущая страница далеко от 1-й (>10), то часть предыдущих страниц
// скрываем троеточием
// Если текущая страница имеет номер до 10, то выводим все номера
// перед заданным диапазоном без скрытия
$y = $first - 1;
if ($first > 10) {
echo "<a href='{$link}?page={$y}'>...</a> ";
} else {
for($i = 2;$i < $first;$i++){
echo "<a href='{$link}?page={$i}'>$i</a> ";
}
}
// отображаем заданный диапазон: текущая страница +-$prev
for($i = $first;$i < $last + 1;$i++){
// если выводится текущая страница, то ей назначается особый стиль css
if($i == $curr_link) { ?>
<span><?php echo $i; ?></span>
<?php } else {
$alink = "<a href='{$link}";
if($i != 1) $alink .= "?page={$i}";
$alink .= "'>$i</a> ";
echo $alink;
}
}
$y = $last + 1;
// часть страниц скрываем троеточием
if ($last < ceil($all / $lim) && ceil($all / $lim) - $last > 2) echo "<a href='{$link}?page={$y}'>...</a> ";
// выводим последнюю страницу
$e = ceil($all / $lim);
if ($last < ceil($all / $lim)) echo "<a href='{$link}?page={$e}'>$e</a>";
}
Код страницы:
$comm = $db->query("SELECT * FROM `news_comm` WHERE `id_news` = ".$_GET['id']." ORDER BY `time` DESC");
$n = $comm->num_rows;
$all = $n; // количество постов в категории (определяем количество постов в базе данных)
$lim = 10; // количество постов, размещаемых на одной странице
$prev = 3; // количество отображаемых ссылок до и после номера текущей страницы
$curr_link = $_GET['page']; // номер текущей страницы (получаем из URL)
$curr_css = "current"; // css-стиль для ссылки на "текущую (активную)" страницу
$link = "http://castles.worldbyte.net/news/".$_GET['id']."/"; // часть адреса, используемый для формирования линков на другие страницы
while($com = $comm->fetch_assoc() ){
echo '<small>'.$com['author'].'|'.times($com['time']).'</small><br/>';
echo '<strong>'.$com['text'].'</strong><br/>';
}
pagination($all, $lim, $prev, $curr_link, $curr_css, $link);
CreepMatis, кто для какова скрипта?
butter, В смысле?
CreepMatis (31.05.2015 в 12:19)
butter, В смысле?
butter, В смысле?
Это код от какого скрипта?
CreepMatis, у меня просто такая самая ошибка на второю страничку перейти немогу, меня кидает на первую стр
Постраничная ВАГИНАЦИЯ! О_о
NAWI,
Без комментариев. В баню иди...
![*omg*](https://bym.guru/modules/smiles/smiles/1067_mem_omg.png)
значит какая-то прабла в коде страниц.
Возможно в ядре нету этой функции
Проблему решил) Вместо этого кода пагинации использовал вариацию из всеми любимой БТ. Она работает полноценно.