Форум программистов, компьютерный форум, киберфорум
PHP: базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
1 / 1 / 1
Регистрация: 06.12.2012
Сообщений: 30

Постраничный вывод

06.12.2012, 19:22. Показов 1388. Ответов 4

Студворк — интернет-сервис помощи студентам
Всем доброго времени суток! Нашёл в инете исходник постраничной навигации с отличным функционалом, пытаюсь адаптировать под свой сайт.

ЗАДАЧА: разбить все выводимые из БД сообщения по 8 штук и вывести их постранично (8 штук на страницу)
Реализация в коде.
ПРОБЛЕМА: после вывода 8-й заметки (1-й страницы) выводится меню навигации (стрелки "вперёд" - "назад" и номера страниц), а после него продолжается вывод заметок из базы до самой последней.
Необходимо как-то "обрезать" этот вывод, чтобы на странице оставалось 8 заметок, остальные перенести на следующую страницу, и так далее по восемь штук...
Как это реализовать? Заранее спасибо.
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
/// количество сообщений на странице 
$num = "8";
// Извлекаем из URL текущую страницу
@$page = $_GET['page'];
// Определяем общее число сообщений в базе данных
$result00 = mysql_query("SELECT COUNT(*) FROM data WHERE cat='$cat'");
$temp = mysql_fetch_array($result00);
$posts = $temp[0];
// Находим общее число страниц
$total = (($posts - 1) / $num) + 1;
$total =  intval($total);
// Определяем начало сообщений для текущей страницы
$page = intval($page);
// Если значение $page меньше единицы или отрицательное,
// переходим на первую страницу.
// А если слишком большое, то переходим на последнюю
if(empty($page) or $page < 0) $page = 1;
  if($page > $total) $page = $total;
// Вычисляем начиная с какого номера
// следует выводить сообщения
$start = $page * $num - $num;
// Выбираем $num сообщений начиная с номера $start       
        
// Выбираем нужные данные из базы
$result = mysql_query("SELECT МОИ ДАННЫЕ FROM ТАБЛИЦА БД WHERE cat = '$cat'",$db);
 
if (!$result)// Если запрос не проходит, выводим ошибку
{
echo "<p>Извините, произошла ошибка. <br> <strong>Код ошибки:</strong></p>";
exit(mysql_error());
}
if (mysql_num_rows($result) > 0)// Если данных больше нуля,
{
$myrow = mysql_fetch_array($result); 
do
{
$r = $myrow["rating"]/$myrow["q_vote"]; 
$r = intval($r);
// Выводим форму
printf (ЗДЕСЬ МОЯ ФОРМА ВЫВОДА); 
 
}
while ($myrow = mysql_fetch_array($result));
 
 
// Проверяем нужны ли стрелки назад
if ($page != 1) $pervpage = '<a href=view_cat.php?cat='.$cat.'&page=1>Первая</a> | <a href=view_cat.php?cat='.$cat.'&page='. ($page - 1) .'>Предыдущая</a> | ';
// Проверяем нужны ли стрелки вперед
if ($page != $total) $nextpage = ' | <a href=view_cat.php?cat='.$cat.'&page='. ($page + 1) .'>Следующая</a> | <a href=view_cat.php?cat='.$cat.'&page=' .$total. '>Последняя</a>';
 
// Находим две ближайшие станицы с обоих краев, если они есть
if($page - 5 > 0) $page5left = ' <a href=view_cat.php?cat='.$cat.'&page='. ($page - 5) .'>'. ($page - 5) .'</a> | ';
if($page - 4 > 0) $page4left = ' <a href=view_cat.php?cat='.$cat.'&page='. ($page - 4) .'>'. ($page - 4) .'</a> | ';
if($page - 3 > 0) $page3left = ' <a href=view_cat.php?cat='.$cat.'&page='. ($page - 3) .'>'. ($page - 3) .'</a> | ';
if($page - 2 > 0) $page2left = ' <a href=view_cat.php?cat='.$cat.'&page='. ($page - 2) .'>'. ($page - 2) .'</a> | ';
if($page - 1 > 0) $page1left = '<a href=view_cat.php?cat='.$cat.'&page='. ($page - 1) .'>'. ($page - 1) .'</a> | ';
 
if($page + 5 <= $total) $page5right = ' | <a href=view_cat.php?cat='.$cat.'&page='. ($page + 5) .'>'. ($page + 5) .'</a>';
if($page + 4 <= $total) $page4right = ' | <a href=view_cat.php?cat='.$cat.'&page='. ($page + 4) .'>'. ($page + 4) .'</a>';
if($page + 3 <= $total) $page3right = ' | <a href=view_cat.php?cat='.$cat.'&page='. ($page + 3) .'>'. ($page + 3) .'</a>';
if($page + 2 <= $total) $page2right = ' | <a href=view_cat.php?cat='.$cat.'&page='. ($page + 2) .'>'. ($page + 2) .'</a>';
if($page + 1 <= $total) $page1right = ' | <a href=view_cat.php?cat='.$cat.'&page='. ($page + 1) .'>'. ($page + 1) .'</a>';
 
// Вывод меню если страниц больше одной
 
if ($total > 1)
{
Error_Reporting(E_ALL & ~E_NOTICE);
echo "<div class=\"pstrnav\">";
echo $pervpage.$page5left.$page4left.$page3left.$page2left.$page1left.'<b>'.$page.'</b>'.$page1right.$page2right.$page3right.$page4right.$page5right.$nextpage;
echo "</div>";
}
 
 
 
 
}
// Иначе пишем, что в БД ничего нет
else
{echo "<p>В базе данных нет информации по вашему запросу.</p>";
exit();}
 
?>
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
06.12.2012, 19:22
Ответы с готовыми решениями:

Постраничный вывод
Помогите отредактировать скрипт постраничного вывода: function link_bar($page, $count,$perpage,$show_link) { $p_c = ceil($count...

Постраничный вывод
Есть скрипт &lt;? include(&quot;config.php&quot;); $content = ' &lt;html&gt; &lt;head&gt;

Постраничный вывод из бд
Всем доброго времени суток очередной раз нкждаюсь в вашей помощи есть скрипт вывода данных из бд как организовать постраничный вывод по...

4
 Аватар для alpex
603 / 578 / 103
Регистрация: 16.07.2012
Сообщений: 1,762
06.12.2012, 19:28
Цитата Сообщение от Shаmanыч Посмотреть сообщение
$result = mysql_query("SELECT МОИ ДАННЫЕ FROM ТАБЛИЦА БД WHERE cat = '$cat'",$db);
здесь еще лимит должен стоять
PHP
1
$result = mysql_query("SELECT МОИ ДАННЫЕ FROM ТАБЛИЦА БД WHERE cat = '$cat' LIMIT $start, 8",$db);
1
1 / 1 / 1
Регистрация: 06.12.2012
Сообщений: 30
06.12.2012, 19:41  [ТС]
Спасибо, всё работает)
0
 Аватар для alpex
603 / 578 / 103
Регистрация: 16.07.2012
Сообщений: 1,762
06.12.2012, 19:46
мне почему то кажется что в этой строке будет куча ошибок уровня notice
Цитата Сообщение от Shаmanыч Посмотреть сообщение
PHP
1
echo $pervpage.$page5left.$page4left.$page3left.$page2left.$page1left.'<b>'.$page.'</b>'.$page1right.$page2right.$page3right.$page4right.$page5right.$nextpage;
0
 Аватар для Василий Макогон
270 / 226 / 11
Регистрация: 20.04.2012
Сообщений: 817
07.12.2012, 17:01
http://www.pagination.ru
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
07.12.2012, 17:01
Помогаю со студенческими работами здесь

постраничный вывод
привет, никак не пойму в чем ошибка кода, который осуществляет вывод данных из бд фиксированным числом! при нажатии на &quot;далее&quot;...

Постраничный вывод......
Ребят, ни как не получается с постраничным выводом, то-есть он работает, но на страницу выводятся, все номера страниц какие есть. А как...

Постраничный вывод
Всем доброго времени суток, на сайте есть вывод пользователей, хочу реализовать постраничный вывод. Так вывожу пользователей , когда...

Постраничный вывод с таблицы
Я нашел много информации на эту тему, НО в основном это качается неизменяемого списка. У меня например записи идут не по порядку (то есть...

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


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru