Задать вопрос

Разбивка на страницы?

Помогите мне разбить правильно страницы с ограничением и вперёд и назад.

$NotBd = mysql_result(
mysql_query(
"
SELECT 
COUNT(*) 
FROM posts 
WHERE 
city_id='".mysql_real_escape_string($CityBdID['id'])."' AND 
category_id='".mysql_real_escape_string($BdCat['id'])."'
"
),0);

//
if ($NotBd == 0) {

echo '<div class="ad2 card card-block">
В данном разделе пусто:( Будь первым опубликуй поскорее свой <a href="'. $site.'/AddPost">первый пост</a> &#9825</div>';

}


// количество записей, выводимых на странице
$per_page = 1;



// получаем номер страницы
if (isset($_GET['page'])) $page = ($_GET['page']-1); else $page = 0;

// вычисляем первый оператор для LIMIT
$start = abs($page*$per_page);

// составляем запрос и выводим записи
// переменную $start используем, как нумератор записей.
$sql = mysql_query(
"
SELECT * 
FROM posts 
WHERE 
city_id='".mysql_real_escape_string($CityBdID['id'])."' AND 
category_id='".mysql_real_escape_string($BdCat['id'])."'
ORDER BY 
internal_id 
LIMIT $start,$per_page
" 
);


while($row = mysql_fetch_array($sql)) {
	
	require __DIR__ . '/../post.php';

}

// дальше выводим ссылки на страницы:
$sql = "
SELECT 
COUNT(*) 
FROM posts 
WHERE 
city_id='".mysql_real_escape_string($CityBdID['id'])."' AND 
category_id='".mysql_real_escape_string($BdCat['id'])."'
";

$res = mysql_query($sql);
$row = mysql_fetch_row($res);
$total_rows = $row[0];

$num_pages = ceil($total_rows/$per_page);

?>

</div>

<div>
<ul class="pagination" role="navigation">

<li class="page-item disabled" aria-disabled="true" aria-label="« Назад">
<span class="page-link" aria-hidden="true">‹</span>
</li>

<? 

for($i=1; $i<=$num_pages; $i++) {
	
if ($i-1 == $page) {
	
echo '
<li class="page-item active" aria-current="page">
<span class="page-link">'.$i.'</span>
</li>
';

} else {
	
echo '
<li class="page-item"><a class="page-link" href="'.$site.'?page='.$i.'">'.$i.'</a></li>
';

}

}


?>

<li class="page-item">
<a class="page-link" href="" rel="next" aria-label="Вперёд »">›</a>
</li>

</ul>
</div>
  • Вопрос задан
  • 146 просмотров
Подписаться 1 Простой 11 комментариев
Пригласить эксперта
Ответы на вопрос 1
ipatiev
@ipatiev Куратор тега PHP
Потомок старинного рода Ипатьевых-Колотитьевых
Чтобы ограничить количество выводимых страниц требуется знание арифметики в пределах начальной школы.
Чтобы вместо 1 и $num_pages использовать заранее рассчитанные значения, укладывающиеся в определённый интервал. Например 10 страниц.
То есть надо всего лишь определить начальную и конечную цифры, которые подставлять в for вместо 1 и $num_pages.
Например, если мы хотим выводить только 10 страниц, а текущую выводить посередине то для получения первой цифры надо отнять от текущей 4. Затем к ней надо прибавить 9 - так мы получим второе число.
При этом, разумеется, надо проверить, чтобы первое не было меньше 1, а последнее - больше $num_pages.
А дальше просто подставить их в for. Вот и всё.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы