Форум программистов, компьютерный форум, киберфорум
PHP: базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.77/13: Рейтинг темы: голосов - 13, средняя оценка - 4.77
3 / 3 / 0
Регистрация: 10.12.2013
Сообщений: 32

Постраничное разбиение большого объема текста PHP+MYSQL

08.11.2015, 16:52. Показов 2813. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток.

В БД хранится множество статей разного объема. При просмотре любая статья выводится на одной странице, что очень не удобно при ее прочтении. Хотел сделать, чтобы вся статья разбивалась на несколько страниц примерно равного объема.

Пробовал делить:
1) по количеству символов. Недостаток: страница может закончиться по середине слова.
2) по абзацам. Недостаток: в абзаце может быть как 1 строка, так 40 строк, значит объем страниц может сильно различаться.
3) ставить метки внутри статьи. Недостаток: если статья на сотни страниц, то это муторно и долго, а статья может измениться и тогда все метки придется двигать заново.

Поэтому однозначно статья должна разбиваться автоматически либо сразу при создании, либо при выводе.

Поиск по инету многого не дал, так как на подобные вопросы предлагают делить список всех статей на страницы (с помощью плагина пагинации), а не саму статью.

Может у кого есть простые способы реализации, как сделать разбиение, буду очень рад услышать Ваше мнение.

Запрос к БД и вывод на экран содержимого статьи:

PHP
1
2
3
4
5
6
7
8
9
$q_name_test = mysql_query('SELECT * FROM edu_variant WHERE id = "'.$_GET['show_edu'].'"');
   if ($q_name_test)
   { 
    $name_test = mysql_fetch_array($q_name_test);
   }
$trans = get_html_translation_table(HTML_ENTITIES);
$trans = array_flip($trans);
$value = strtr($name_test['text'], $trans);
echo $value; //выходная переменная, где хранится все содержимое статьи
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
08.11.2015, 16:52
Ответы с готовыми решениями:

php/mysql - постраничное разбиение
короче, вот в чём дело есть код, который берёт записи с мускула, элементарно простой записи выдаются все, все сразу, без растасовки на...

Разбиение на страницы большого объема текста
Здравствуйте. Подскажите пожалуйста, как можно реализовать постраничный вывод текста. Суть в том, что php запрос выводит из базы большой...

Добавление большого объема данных в mysql
Здравствуйте! Мне нужно добавить большой объем текста в mysql через обычное поле input типа file в php. Постоянно когда я запускай...

6
Эксперт PHP
3899 / 3237 / 1353
Регистрация: 01.08.2012
Сообщений: 10,909
08.11.2015, 17:43
Цитата Сообщение от KDG94 Посмотреть сообщение
что очень не удобно
А чем неудобно? Обычно везде так.

Как вариант - JQuery UI - Tabs, только сверстать вместо вкладок кнопки со страницами - 1 2 3 и т.д. И показывать кнопки под статьёй. Тогда и весь контент статьи будет на одной странице (что хорошо, например, для SEO), и не нужно в PHP продумывать навигацию, и сверстать можно в виде чего-то вроде книги, в которой ты пролистываешь страницы, тогда можно и после X символов перевод на след. страницу делать.
0
3 / 3 / 0
Регистрация: 10.12.2013
Сообщений: 32
08.11.2015, 18:33  [ТС]
Если выводить 100 страниц на одной, читать не очень удобно, особенно, когда за 1 раз прочитать не удается.
И еще 1 более весомая причина:
На сайте можно изучать теорию и проходить тесты. Требуется, чтобы после прохождения теста можно было увидеть неправильные ответы и страничку с теорией, где можно найти этот верный ответ. Получается, что указывать ссылку на целый учебник из 200 страниц это почти то же самое, что не указать ничего.

Заранее количество страниц неизвестно.

Именно надо, чтобы контент раскидывался по разным страницам index.php?show_edu=3 - это ссылка, когда все на одной. а надо именно с изменениями адреса примерно так: index.php?show_edu=3&page=1
0
Эксперт PHP
3899 / 3237 / 1353
Регистрация: 01.08.2012
Сообщений: 10,909
08.11.2015, 19:22
KDG94, тогда можно хранить в одной таблице книгу (id, название, описание и т.п.), в другой - соответствующие этой книги страницы (id_page, id_book, text, sort - сортировка, чтобы выводить страницы в нужном порядке), и в третьей таблице тесты.
0
3 / 3 / 0
Регистрация: 10.12.2013
Сообщений: 32
08.11.2015, 20:37  [ТС]
Все бы хорошо, но сделано уже добавление и изменение. Там добавляется с 1 раза вся книга. а иначе придется переделывать добавление на добавление по страницам, если я все правильно понял. Хотелось бы сделать просто: Набрал текст
Отформатировал
Сохранил

И вручную разбивать на страницы - это не самый хорошей вариант.
0
Эксперт PHP
3899 / 3237 / 1353
Регистрация: 01.08.2012
Сообщений: 10,909
08.11.2015, 20:54
Лучший ответ Сообщение было отмечено KDG94 как решение

Решение

KDG94, не вижу других вариантов. Либо добавлять разом всю книгу с риском для читателя не совсем корректной разбивки (в идеале разбивать нужно по каким-то логическим отрезкам, не всегда они являются абзацами, поэтому это нужно делать вручную), либо по страницам с их геморройной загрузкой. Решать вам.

Можно придумать какой-нибудь простенький алгоритм...
1. Берём минимальную длину (например, 2000 символов), ищем следующий абзац. Если между след абзацем и 2000-ным символом менее 500 символов - выводим вместе со след абзацем.

2. Если более - тогда ищем ближайшую точку. Если до неё менее 500 символов - выводим до точки.

3. Если более 500 символов - выводим 2000 символов как есть.

И так по циклу. Ну и если символов осталось менее 2000 - значит, это конец книги, выводим что есть.
1
3 / 3 / 0
Регистрация: 10.12.2013
Сообщений: 32
08.11.2015, 21:37  [ТС]
Спасибо. Пожалуй придется потратить некоторое время на реализацию данного алгоритма. Это получается объединены разбивка по символам и по абзацам, с учетом того, что в конец абзаца, мы скорее всего при разбивании не попадем. Буду пробовать, благодарен вам за идею.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
08.11.2015, 21:37
Помогаю со студенческими работами здесь

Ввод большого объема текста
Здравствуйте. Пишу приложение, из которого должен будет потом быть экспорт в ворд. Соответственно будет вводиться большой объем текста....

Вставка большого объема текста
Стоит задача вставить большое кол-во текста на форму(8 страниц a4). Причем в тексте есть еще картинки. Подскажите в какой компонент можно...

Вставка большого объема информации в базу данных MySQL
Добрый день!!! Друзья помогите разобраться, я написал программу сам, но не очень разбираюсь и не совсем понимаю правильно ли она...

Вывод большого объема текста echo <<<
echo &lt;&lt;&lt;MARCER Строка1&lt;br/&gt; Строка2&lt;br/&gt; Строка3&lt;br/&gt; MARCER; У меня отмечается ошибка по первой строке и я не могу вывести...

Считывание большого объема текста с мемо
Программа написана не самым лучшим образом, увы. но в ней нужно поменять считывание так чтобы она могла прочитать большие объемы текста(...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
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 была полностью переписана на Си, в. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru