разбиение данных из одной таблицы

eXed

Guest
разбиение данных из одной таблицы

с мускулом недавно работаю, не судите строго. Нужно реализовать такую задачу, пока только догадываюсь прав ли я.
Задача: есть текст, его нужно разбить на несколько страниц, но он должен сохранятся в одной ячейке. в чем собственно и дело. Мне нужно чтобы редактору было понятно где какая страница начинается и я решил использовать теги определнного формата например [page_1] или еще к-н.
Вопрос: можно ли сделать выборку из текстового поля средствами MySQL до нужной строки.
Как я понимаю, если делать полную выборку, парсить считать страницы, то каждый раз придется вытаскивать ВСЕ целеком. Если я в чем-то ошибаюсь, подскажите решение другим путем. Заранее всем Спасибо.
 

chira

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

Yurik

/dev/null
А в чем проблема чтобы вытянуть одну строку полностью?
mysql_fetch_* отлично справится.
или там много мегов текста?

С 2 таблицами конечно быстро и удобно получать страницы, но если редактируется что-то (переставляются границы страницы скажем из-за вставки пары строк на первой странице) то гимору не оберешься.
 

.des.

Поставил пиво кому надо ;-)
Тем более и база тоже может с этим справиться.
Скорее из области извратов, но я иногда применяю запросы подобные следующим :)

Если разделители каждой страницы со своим индексом (page_1, page_2,...)
PHP:
SELECT @s:=LOCATE('page_N',article) s, 
             SUBSTRING(article, @s,LOCATE('page_NN',article)-@s) page 
FROM table 
WHERE article_id=...;
Если разделители страниц одинаковые то сложнее :(
PHP:
SELECT @s:=LENGTH(SUBSTRING_INDEX(article,'{page}',N)) s, @l:=LENGTH(SUBSTRING_INDEX(article,'{page}',NN))-@s l,
SUBSTRING(article, @s,@l) page 
FROM table 
WHERE article_id=...;
Хотя подобные запросы обычно делаются в шеле, в рабочих скриптах наличие таковых указывает на ошибки в проектировании базы.
 

chira

Новичок
Автор оригинала: Yurik
С 2 таблицами конечно быстро и удобно получать страницы, но если редактируется что-то (переставляются границы страницы скажем из-за вставки пары строк на первой странице) то гимору не оберешься.
Не будет гемороя , если разбиение на странице делать при записи текста в базу.

Каждый раз относится к тексту как к новому.

Примерный алгоритм:
-Взяли текст из базы (из всех страниц) для редактирования и проставили теги [page_1] между страницами.
-запомнили отношения ID <-> Page N
-изменили чего нужно, пеместили теги страниц в нужные места
-перед записью разбиваем текст на страницы и каждую пишем в отдельную строку.

Я думаю особой скорости при записи в базу не требуется.
Гораздо важнее скорость выборки нужной страницы (если я не ошибаюсь).
 
Сверху