|
3 / 3 / 0
Регистрация: 10.12.2013
Сообщений: 32
|
||||||
Постраничное разбиение большого объема текста PHP+MYSQL08.11.2015, 16:52. Показов 2813. Ответов 6
Метки нет (Все метки)
Доброго времени суток.
В БД хранится множество статей разного объема. При просмотре любая статья выводится на одной странице, что очень не удобно при ее прочтении. Хотел сделать, чтобы вся статья разбивалась на несколько страниц примерно равного объема. Пробовал делить: 1) по количеству символов. Недостаток: страница может закончиться по середине слова. 2) по абзацам. Недостаток: в абзаце может быть как 1 строка, так 40 строк, значит объем страниц может сильно различаться. 3) ставить метки внутри статьи. Недостаток: если статья на сотни страниц, то это муторно и долго, а статья может измениться и тогда все метки придется двигать заново. Поэтому однозначно статья должна разбиваться автоматически либо сразу при создании, либо при выводе. Поиск по инету многого не дал, так как на подобные вопросы предлагают делить список всех статей на страницы (с помощью плагина пагинации), а не саму статью. Может у кого есть простые способы реализации, как сделать разбиение, буду очень рад услышать Ваше мнение. Запрос к БД и вывод на экран содержимого статьи:
0
|
||||||
| 08.11.2015, 16:52 | |
|
Ответы с готовыми решениями:
6
php/mysql - постраничное разбиение Разбиение на страницы большого объема текста
|
|
3899 / 3237 / 1353
Регистрация: 01.08.2012
Сообщений: 10,909
|
||
| 08.11.2015, 17:43 | ||
|
Как вариант - 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
|
|
|
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
|
|
|
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
|
|
| 08.11.2015, 21:37 | |
|
Помогаю со студенческими работами здесь
7
Ввод большого объема текста Вставка большого объема текста Вставка большого объема информации в базу данных MySQL Вывод большого объема текста echo <<< Считывание большого объема текста с мемо Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
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 была полностью переписана на Си, в. . .
|