Поиск скриптов | проблемы с пагинацией
Тема закрыта by
Вежливый Орк
Делаю на сайте пагинацию. Проблема в том что ничего не выводит вот код
________
посл. ред. 29.10.2019 в 13:10; всего 1 раз(а); by AdsNet
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
________
посл. ред. 29.10.2019 в 13:27; всего 1 раз(а); by System
есть такая штука как var_dump() и exit()
большинство ТС на форуме охренеют, но с их помощью можно решить любую проблему не создавав очередную бесполезную тему
большинство ТС на форуме охренеют, но с их помощью можно решить любую проблему не создавав очередную бесполезную тему
DELETED
29 октября 2019, в 14:30
Delete
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}&"; } } 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) . "'>‹</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) . "'>›</a></li>"; } if ($this->current_page > 3) { $start_page = "<li class='page-item'><a class='page-link' href='{$this->uri}page=1'>«</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}'>»</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; ?> ------
Скачиваний: 110
________
посл. ред. 29.10.2019 в 14:33; всего 1 раз(а); by Вероломство
P.s: Когда хром решил перевести страницу
------
67971_Screenshot_20191029_145612_com.android.chrome.jpg (441.7 Kb)
Скачиваний: 111
------
Скачиваний: 111
Вероломство , саму пагинацию не выводит
DELETED
29 октября 2019, в 15:04
Delete
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" }
object(PDOStatement)#4 (1) { ["queryString"]=> string(46) "SELECT * FROM `user` ORDER BY `id` LIMIT 0, 10" }

