Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.54/13: Рейтинг темы: голосов - 13, средняя оценка - 4.54
 Аватар для Raisin Zn
101 / 100 / 51
Регистрация: 19.04.2011
Сообщений: 965

Пагинация

12.05.2014, 10:43. Показов 2624. Ответов 18
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте!
Имею код вывода всех зарегистрированных пользователей:
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php include 'header.html'; ?>
 
<table>
    <thead>
        <tr>
            <td><?=$lang['login']?></td>
            <td><?=$lang['email']?></td>
            <td><?=$lang['registration']?></td>
        </tr>
    </thead>
    <tbody> 
        
<?php foreach($users as $users):?>
        <tr>
            <td><a href="/user.php?p=user&id=<?=$users['id']?>"><?=$users['login']?></td>
            <td><?=$users['email']?></td>
            <td><?=$users['date_reg']?></td>
        </tr>
<?php endforeach;?>
 
    </tbody>
</table>
 
<?php include 'footer.html'; ?>
PHP
1
2
3
4
5
6
7
8
<?php
$title = $lang['all_users'];
 
$connect = mysqli_query($sql, "SELECT * FROM `user` ORDER BY `login` DESC") or die(mysqli_error());
$users = array();
while($data = mysqli_fetch_assoc($connect))
$users[] = $data;
?>
Сейчас все пользователи выводятся на одну страницу, как можно прикрутить пагинацию к этому скрипту?
Смотрел во этот код: http://phpfaq.ru/paginator который ниже - Новая версия, но так и не смог его привинтить...
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
12.05.2014, 10:43
Ответы с готовыми решениями:

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

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

Пагинация
Здравствуйте. Помогите кому не трудно сделать переключатель страниц. &lt;?php $ordtype = 'title'; $tb =...

18
 Аватар для FastFrog
10 / 10 / 4
Регистрация: 26.12.2012
Сообщений: 141
12.05.2014, 10:56
PHP
1
2
3
4
5
6
7
8
9
$page = $_GET['page'];
if($page == 1)
{
$page = 0;
}
$connect = mysqli_query($sql, "SELECT * FROM `user` ORDER BY `login` DESC LIMIT 10 OFFSET $page * 10 ") or die(mysqli_error());
$users = array();
while($data = mysqli_fetch_assoc($connect))
$users[] = $data;
get параметром передаешь номер страницы... ну и чтобы узнать сколько всего страниц
PHP
1
2
$count = SELECT COUNT(*) FROM user ; тут запрос сами напишете, ну и не забываем что если записей мало (например < 10) то и страница 1 а не ( 5 / 10 = 0.5) проверки сделать надо
$count = $count / 10;
а дальше циклом выводишь номера страниц.
PHP
1
2
3
<?foreach($count as $i):?>
<a href="/?page=<?=$i;?>"><?=$i;?></a>
<?endforeach?>
вроде как то так... извиняюсь если что то упустил...
0
 Аватар для Raisin Zn
101 / 100 / 51
Регистрация: 19.04.2011
Сообщений: 965
12.05.2014, 19:11  [ТС]
Спасибо, но не помогло...
Поищу еще решение....
0
129 / 50 / 8
Регистрация: 01.12.2013
Сообщений: 572
12.05.2014, 21:18
FastFrog вопрос: что за переменная $sql в 6 строке?
0
 Аватар для FastFrog
10 / 10 / 4
Регистрация: 26.12.2012
Сообщений: 141
12.05.2014, 23:09
Я не знаю. Это код автора, а не мой.
0
129 / 50 / 8
Регистрация: 01.12.2013
Сообщений: 572
12.05.2014, 23:13
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
$id = (addslashes($_GET['id'])); // Забираем тему статей из URL
$res = mysql_query("select `tema_id`, `tema_name` from `tema`");
$result = mysql_query(" SELECT id, title, zag, anons, text, date, tema, img  FROM articles
                        WHERE tema='$id' ORDER BY id DESC ") or die(mysql_error());
$row = mysql_fetch_array($result);
?>
    <?php while($row = mysql_fetch_array($result)):?>  // Цикл вывода всех статей в этой теме
<!-- тут html код дизайна -->
        <?=$row['id']?>
        <?php echo $row['zag']?>
        <?php echo $row['date']?>
    <? endwhile;?>
<!-- тут хотелось бы пагинатор -->
<? mysql_close();?>
Вот как мне вставить пагинатор на предпоследнюю строку?
0
 Аватар для FastFrog
10 / 10 / 4
Регистрация: 26.12.2012
Сообщений: 141
12.05.2014, 23:18
Алгоритм использовать который я выше описал, а сам html код выводить как то так:
PHP
1
2
3
4
5
<?for($i = 0;i<$count;$i++)
{
echo '<a href="/?page='.$i.'">'.$i.'</a>';
}
?>
где $count соответственно кол-во страниц.
0
129 / 50 / 8
Регистрация: 01.12.2013
Сообщений: 572
12.05.2014, 23:24
Добавил запрос с COUNT

PHP
1
2
3
4
5
6
7
8
9
10
11
12
<?php
$id = (addslashes($_GET['id'])); // Забираем тему статей из URL
$res = mysql_query("select `tema_id`, `tema_name` from `tema`");
$result = mysql_query(" SELECT id, title, zag, anons, text, date, tema, img  FROM articles
                        WHERE tema='$id' ORDER BY id DESC ") or die(mysql_error());
 
$count = mysql_query(" SELECT COUNT id, title, zag, anons, text, date, tema, img  FROM articles
                        WHERE tema='$id' ORDER BY id DESC LIMIT ") or die(mysql_error());
$count = $count / 5;
 
$row = mysql_fetch_array($result);
?>
Результат: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 2
0
 Аватар для FastFrog
10 / 10 / 4
Регистрация: 26.12.2012
Сообщений: 141
12.05.2014, 23:29
PHP
1
2
3
$result = mysql_query(" SELECT COUNT(*) as count FROM articles WHERE tema='$id'") or die(mysql_error());
$count = mysql_fetch_assoc($result);
$count = $count['count'];
1
129 / 50 / 8
Регистрация: 01.12.2013
Сообщений: 572
12.05.2014, 23:34
То же самое SQL syntax, сделал так:

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
include_once("db_blog.php");
 
$id = $_GET['id'];
$res = mysql_query("select `tema_id`, `tema_name` from `tema`");
$result = mysql_query(" SELECT id, title, zag, anons, text, date, tema, img  FROM articles
                        WHERE tema='$id' ORDER BY id DESC LIMIT ") or die(mysql_error());
$result_count = mysql_query(" SELECT COUNT(*) as count FROM articles WHERE tema='$id'") or die(mysql_error());
$count = mysql_fetch_assoc($result_count);
$count = $count['count'];
$count = $count / 5;
$row = mysql_fetch_array($result);
?>
0
 Аватар для FastFrog
10 / 10 / 4
Регистрация: 26.12.2012
Сообщений: 141
12.05.2014, 23:35
Как я вам отвечу на вопрос если я ни вижу кода (всего) ни что за ошибка...
0
129 / 50 / 8
Регистрация: 01.12.2013
Сообщений: 572
12.05.2014, 23:37
Это весь код запросов.
Ошибка: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 2

FastFrog извиняюсь. Сам где-то косячу, пошёл в phpmyadmin и сделал запрос SELECT COUNT(*) as count FROM articles WHERE tema='$id'
Ответ: 3 - значит запрос правильный
0
 Аватар для FastFrog
10 / 10 / 4
Регистрация: 26.12.2012
Сообщений: 141
12.05.2014, 23:44
Ну вот. Написано же,
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 2
а именно "у вас ошибка с синтаксисом проверьте документацию но использование ' ' тобишь скобочек "
PHP
1
2
$result = mysql_query(" SELECT id, title, zag, anons, text, date, tema, img  FROM articles
                        WHERE tema='$id' ORDER BY id DESC ") or die(mysql_error());
0
129 / 50 / 8
Регистрация: 01.12.2013
Сообщений: 572
12.05.2014, 23:54
Запрос sql прошёл, пагинатор не выводится внизу, решил глянуть что в переменной var_dump

PHP
1
2
3
4
<? var_dump ($count);?>
<?foreach($count as $i):?>
<a href="/?page=<?=$i;?>"><?=$i;?></a>
<?endforeach?>
Ответ: resource(10) of type (mysql result)
Может из-за того что тип mysql result не выводится, его надо преобразовать во что ни будь?
0
 Аватар для FastFrog
10 / 10 / 4
Регистрация: 26.12.2012
Сообщений: 141
13.05.2014, 00:04
я не совсем понимаю смысл этого кода
PHP
1
2
3
<?foreach($count as $i):?>
<a href="/?page=<?=$i;?>"><?=$i;?></a>
<?endforeach?>
если вы делаете что я сказал что в $count на данный момент хранится число а не массив, следственно и работать с ним надо по другому.
PHP
1
2
3
4
5
6
<?
for($i = 0;$i<$count;$i++)
{
echo '<a href="/?page='.$i.'">'.$i.'</a>';
}
?>
я уже писал вам этот код
1
129 / 50 / 8
Регистрация: 01.12.2013
Сообщений: 572
13.05.2014, 00:14
Сори, мне показалось что тот тоже ваш код из второго поста.

Поставил, в целом работает, только он мне выдал: 0123456789
Учитывая что записей 11 и делю я на 5, должно быть 3 страницы. Где же ошибка?
0
 Аватар для FastFrog
10 / 10 / 4
Регистрация: 26.12.2012
Сообщений: 141
13.05.2014, 00:30
Во первых это нужно сделать проверку ведь если 11 разделить на 5 не будет 3, а будет 2.2. Соответственно нужно округлить в большую сторону записи чтобы избежать подобных канфузов делается это так
PHP
1
$count =  ceil($count);
и во вторых, да... извиняюсь, цикл начинается не с 0 а с 1
PHP
1
2
3
4
5
6
<?
for($i = 1;$i<$count;$i++)
{
echo '<a href="/?page='.$i.'">'.$i.'</a>';
}
?>
и убедитесь что в $count именно страницы а не число записей
0
 Аватар для Raisin Zn
101 / 100 / 51
Регистрация: 19.04.2011
Сообщений: 965
13.05.2014, 19:03  [ТС]
Цитата Сообщение от marrk Посмотреть сообщение
что за переменная $sql в 6 строке?
В этой переменной хранятся данные к БД. Без неё MySQL(i) ругается - выдает ошибку...

В общем кое что нашел, получилось так:
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
<?php
$title = $lang['all_users'];
$all_users = mysqli_num_rows(mysqli_query($sql, 'SELECT * FROM `user`'));
$lines_per_page = 5;
 
if (isset($_GET['page']))
{
    $limit = (($_GET['page'] * $lines_per_page) - $lines_per_page);
}
else
{
    $limit = 0;
}
if (($limit + $lines_per_page) > $all_users)
{
    $offset = $all_users - $limit;
}
else
{
    $offset = $lines_per_page;
}
 
$connect = mysqli_query($sql, 'SELECT * FROM `user` LIMIT '.$limit.', '.$offset.'') or die(mysqli_error($sql));
 
$users = array();
while($data = mysqli_fetch_assoc($connect))
$users[] = $data;
?>
Теперь страницы открываются по адресам: сайт.ru/user.php?p=users, сайт.ru/user.php?p=users&page=2, сайт.ru/user.php?p=users&page=3, но к сожалению я ни чего не понял, как сделать цикл для вывода ссылок-цифр страниц (самой пагинации) в шаблон...
Помогите, пожалуйста, допилить.
Спасибо.

Добавлено через 2 минуты
И еще, если поставить не существующею страницу, скажем: сайт.ru/user.php?p=users&page=4566, выдает ошибку:
PHP
1
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '-1' at line 1
Что можно сделать?
0
 Аватар для FastFrog
10 / 10 / 4
Регистрация: 26.12.2012
Сообщений: 141
13.05.2014, 21:18
Ошибку выдает потому что нету проверок на то сколько страниц. А кодом offset вы сдвигаете записи на определенное кол-во едениц. Но если страниц 5999 а записей 5 то и из базы данных он не сможет их достать. Вот и получается нужно проверять имеет ли возможность сделать столько страниц.
На счет сколько может всего быть страниц я уже не раз тут рассказал. Как и сам цикл for для вывода ссылок.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
13.05.2014, 21:18
Помогаю со студенческими работами здесь

Пагинация на сайте
Здравствуйте. Есть пагинация. Выглядит она вот так: Первая 1 2..Последняя &gt;&gt; Как сделать так, чтоб вместо слово последняя выводился...

Не работает пагинация
Не работает пагинатор, при переходе на другую страницу, в строке меняется номер страницы, а на самой станице остается содержание первой...

Пагинация на сайте
есть код, работает хорошо, только вот он выводит все страницы, а мне нужно что бы если допустим я на 3-й, то выводило одну предыдущую и...

Пагинация без БД
Здравствуйте. Ох, пагинация без БД это сложно, но мне нужна помощь. Нужно сделать пагинацию без БД. Чтобы легче было, у меня есть...

Постраничная пагинация
Добрый вечер. Начинаю сходить с ума. Ребят. Как сделать нумерацию кнопок снизу? С выводом информации на страницу проблем нет. Но...


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

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru