0 / 0 / 0
Регистрация: 05.03.2019
Сообщений: 10

Пагинация

13.08.2019, 16:32. Показов 2056. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Ребят, подскажите. Переписываю сайт с подключением PDO. Все уперлось в пагинацию. Был файл рабочий mysqli:

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<div class="paginate wrapper">
    <a href="/menu">КАТЕГОРИИ</a>
<?php
$query = "SELECT COUNT(*) as count FROM `table`";
$result = mysqli_query($conn,$query) or die(mysqli_error($conn));
$count = mysqli_fetch_assoc($result)['count'];
$limit = 6;
$page = isset($_GET['page']) ? $_GET['page'] : 1;
$pagesCount = ceil($count / $limit);
 
if ($page != 1) {
    $prev = $page - 1;
    echo "<a href=\"?page=$prev\">&lang;</a>";
}
 
 
for ($i = 1; $i <= $pagesCount; $i++) {
    if ($page == $i) {
    $class = ' class="active"';
    }else {
        $class = '';
    }
    echo "<a href=\"?page=$i\"$class>$i</a>";
}
 
if ($page < $pagesCount) {
    $next = $page + 1;
    echo "<a href=\"?page=$next\">&rang;</a>";
}
?>
</div>
Попробовал переписать:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<div class="paginate wrapper">
                                                <a href="/menu">КАТЕГОРИИ</a>
                                                <?php
                                                $db = new Db();
 
                                                $sql = $db->column('SELECT COUNT(*) as count FROM `table`');
 
                                                $limit = 6;
 
                                                $count = $sql.['count'];
 
                                                $page = isset($_GET['page']) ? $_GET['page'] : 1;
 
                                                $pagesCount = ceil($count / $limit);
 
                                                if ($page != 1) {
                                                    $prev = $page - 1;
                                                    echo "<a href=\"?page=$prev\">&lang;</a>";
                                                }
 
                                                for ($i = 1; $i <= $pagesCount; $i++) {
                                                    if ($page == $i) {
                                                        $class = ' class="active"';
                                                    }else {
                                                        $class = '';
                                                    }
                                                    echo "<a href=\"?page=$i\"$class>$i</a>";
                                                }
 
                                                if ($page < $pagesCount) {
                                                    $next = $page + 1;
                                                    echo "<a href=\"?page=$next\">&rang;</a>";
                                                }
                                                ?>
                                            </div>
Пагинатор появляется, но при переходе на другие страницы информация не меняется.

Добавлено через 1 минуту
Db.php
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
class Db {
 
    protected $db;
 
    public function __construct()
    {
        $config = include 'module/configDb.php';
        $this->db = new PDO('mysql:host='.$config['host'].';dbname='.$config['name'].';charset='.$config['charset'].'', $config['user'], $config['password']);
    }
 
    public function query ($sql,$params = [])
    {
        $stmt = $this->db->prepare($sql,$params);
        if(!empty($params))
        {
            foreach ($params as $key => $val)
            {
                if (is_int($val))
                {
                    $type = PDO::PARAM_INT;
                }else{
                    $type = PDO::PARAM_STR;
                }
                $stmt->bindValue(':'.$key,$val,$type);
            }
        }
        $stmt->execute();
        return $stmt;
    }
 
 
    public function row ($sql,$params = [])
    {
        $result = $this->query($sql,$params);
        return $result->fetchAll(PDO::FETCH_ASSOC);
    }
 
    public function column ($sql,$params = [])
    {
        $result = $this->query($sql,$params);
        return $result->fetchColumn();
    }
 
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
13.08.2019, 16:32
Ответы с готовыми решениями:

Пагинация, страницы
$CountListPage=5; if(empty($_GET))$Page=1;else $Page=$_GET; $start=($Page-1)*$CountListPage; $sql=&quot;SELECT * FROM `comments` WHERE...

Пагинация php
Делаю для себя сайтик с каталогом цветов, проблема в том, что цветов почти 10000 и нужна постраничная навигация(по 40 цветов на страницу). ...

Пагинация для сайта
помогите есть код вывода из базы данных текст. &lt;?php include(&quot;/db_connection.php&quot;); if(isset($_GET)){ $sqlQuery =...

3
377 / 319 / 73
Регистрация: 15.09.2017
Сообщений: 1,436
13.08.2019, 17:18
Пагинация/PDO тут ни при чем. У вас подход неправильный. Все манипуляции с базой данных (любыми инструментами) нужно выполнять вне шаблонов. В остальном можно добиться полного соответствия MySQLi и PDO MySQL, если не использовать специфичных для PDO вещей вроде возможности включить механизм исключений. Вы зачем подготовленные запросы в данном случае стали использовать?
0
0 / 0 / 0
Регистрация: 05.03.2019
Сообщений: 10
13.08.2019, 17:33  [ТС]
Ну скажем так поступила такая задача, да и самому интересно.
0
0 / 0 / 0
Регистрация: 05.03.2019
Сообщений: 10
14.08.2019, 12:01  [ТС]
Решил проблему!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
14.08.2019, 12:01
Помогаю со студенческими работами здесь

Пагинация страниц без добавления разрыв страниц
Здравствуйте! Подскажите как сделать нумерацию страниц не используя разрыв страниц, так как если много информации в одном материале joomla...

Обычная пагинация или пагинация на ajax
Всем сеошникам привет! Ребята, создается блог на вордпрессе и встал вопрос о выборе пагинации: обычной &lt; 1 2 3 &gt; или на аяксе, с...

Пагинация
Здравствуйте! Имею код вывода всех зарегистрированных пользователей: &lt;?php include 'header.html'; ?&gt; &lt;table&gt; ...

Пагинация
Пытаюсь уже второй день разобраться с пагинацией на сайте, все разные ошибки выскакивают... Создал отдельный файл navigation.php. В нем, в...

Пагинация
Всем привет, делаю пагинацию всё как-бы ничего работает как задумал, кроме одного момента, на странице работает живой поиск.. Вот с ним...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

Новые блоги и статьи
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru