Loading...
Поиск скриптов | проблемы с пагинацией
Делаю на сайте пагинацию. Проблема в том что ничего не выводит
вот код
php
$k_post = $connect->query("SELECT COUNT(*) FROM `user`")->rowCount();

$k_page=k_page($k_post,$set['p_str']);
$page=page($k_page);
$start=$set['p_str']*$page-$set['p_str'];

$use = $connect->query("SELECT * FROM `user` ORDER BY `id` LIMIT $start, $set[p_str]");
$number = 1;
while($all = $use->fetch()){
echo "<div class = 'menu'><a href = 'users?id=".$all['id']."'>".$number.". ".nick($all['id'])."</a></div>";
$number++;
}


if ($k_page>1)str("?all_users&",$k_page,$page);

________
посл. ред. 29.10.2019 в 13:10; всего 1 раз(а); by AdsNet
А дебаг для чего придумали Гг
https://media.proglib.io/wp-uploads/-000//1/xdebug-phpstorm-breakpoint.png
________
посл. ред. 29.10.2019 в 13:27; всего 1 раз(а); by System
есть такая штука как var_dump() и exit()
большинство ТС на форуме охренеют, но с их помощью можно решить любую проблему не создавав очередную бесполезную тему
класс пагинации для bootstrap
php
class Pagination
{
public $uri;
public $per_page;
public $total;
public $count_pages;
public $current_page;

public function __construct($per_page, $total)
{
$this->uri = $this->getParams();
$this->per_page = $per_page;
$this->total = $total;
$this->count_pages = $this->getCountPages();
$this->current_page = $this->getCurrentPage();
}

protected function getParams()
{
$url = $_SERVER['REQUEST_URI'];
$url = explode('?', $url);
$uri = $url[0] . '?';
if (isset($url[1]) && $url[1] != '') {
$params = explode('&', $url[1]);
foreach ($params as $param) {
if (!preg_match("#page=#", $param)) $uri .= "{$param}&amp;";
}
}
return $uri;
}

public function getCountPages()
{
return ceil($this->total / $this->per_page) ?: 1;
}

// моя корректировка: если пользователь ввёл дичь вместо номера страницы или ввёл номер страницы, которого не может быть, то будет отправлен на ту, на которой он стал вводить дичь и в адресной строке не будет дичи
public function getCurrentPage()
{
if (isset($_GET['page'])) {
if (filter_var($_GET['page'], FILTER_VALIDATE_INT, ['options' => ['min_range' => 1, 'max_range' => $this->count_pages]])) {
$_SESSION['page_before'] = $_GET['page'];
return $_GET['page'];
}
header('location: ' . $this->uri . 'page=' . $_SESSION['page_before']);
exit();
}
return 1;
}

public function getStart()
{
return ($this->current_page - 1) * $this->per_page;
}

public function __toString()
{
return $this->getHtml();
}

public function getHtml()
{
$back = $forward = $start_page = $end_page = $page2left = $page1left = $page2right = $page1right = null;
if ($this->current_page > 1) {
$back = "<li class='page-item'><a class='page-link' href='{$this->uri}page=" . ($this->current_page - 1) . "'>&#8249;</a></li>";
}
if ($this->current_page < $this->count_pages) {
$forward = "<li class='page-item'><a class='page-link' href='{$this->uri}page=" . ($this->current_page + 1) . "'>&#8250;</a></li>";
}
if ($this->current_page > 3) {
$start_page = "<li class='page-item'><a class='page-link' href='{$this->uri}page=1'>&laquo;</a></li>";
}
if ($this->current_page < ($this->count_pages - 2)) {
$end_page = "<li class='page-item'><a class='page-link' href='{$this->uri}page={$this->count_pages}'>&raquo;</a></li>";
}
if ($this->current_page - 2 > 0) {
$page2left = "<li class='page-item'><a class='page-link' href='{$this->uri}page=" . ($this->current_page - 2) . "'>" . ($this->current_page - 2) . "</a></li>";
}
if ($this->current_page - 1 > 0) {
$page1left = "<li class='page-item'><a class='page-link' href='{$this->uri}page=" . ($this->current_page - 1) . "'>" . ($this->current_page - 1) . "</a></li>";
}
if ($this->current_page + 1 <= $this->count_pages) {
$page1right = "<li class='page-item'><a class='page-link' href='{$this->uri}page=" . ($this->current_page + 1) . "'>" . ($this->current_page + 1) . "</a></li>";
}
if ($this->current_page + 2 <= $this->count_pages) {
$page2right = "<li class='page-item'><a class='page-link' href='{$this->uri}page=" . ($this->current_page + 2) . "'>" . ($this->current_page + 2) . "</a></li>";
}
return '<nav class="mt-1"><ul class="pagination pagination-sm justify-content-center m-0">' . $start_page . $back . $page2left . $page1left . '<li class="page-item active"><a class="page-link">' . $this->current_page . '</a></li>' . $page1right . $page2right . $forward . $end_page . '</ul></nav>';
}
}

применение
php
$per_page = 5; // сколько записей на странице
$total = запрос на количество строк;
$pagination = new Pagination($per_page, $total);
$start = $pagination->getStart();
$data = запрос c limit $start, $per_page
// кидаем переменные $data и $pagination в вид

// вывод пагинации
<?php if ($pagination->count_pages > 1) : ?>
<?= $pagination ?>
<?php endif; ?>

вот так будет выглядеть

Изображение

------
67969_5d557257d9ba1452930130.png (148.0 Kb)
Скачиваний: 102

________
посл. ред. 29.10.2019 в 14:33; всего 1 раз(а); by Вероломство
P.s: Когда хром решил перевести страницу Гг

Изображение

------
67971_Screenshot_20191029_145612_com.android.chrome.jpg (441.7 Kb)
Скачиваний: 104
Вероломство, саму пагинацию не выводит
AdsNet (29.10.2019 в 14:59)
Вероломство, саму пагинацию не выводит


php
die(var_dump($use)); // разместить после запроса $use = ......
Вероломство,
object(PDOStatement)#4 (1) { ["queryString"]=> string(46) "SELECT * FROM `user` ORDER BY `id` LIMIT 0, 10" }
Онлайн: 0
Время:
Gen. 0.115
(c) Bym.Guru 2010-2025