ФорумПрограммированиеPHP для идиотов → Вывод большого кол-ва текста из БД

Вывод большого кол-ва текста из БД

  • onzone

    Сообщения: 77 Репутация: N Группа: Кто попало

    Spritz 8 апреля 2011 г. 14:05

    Здравствуйте, столкнулся с такой проблемой, необходимо в слой с фиксированной шириной и высотой выводить большое кол-во текста из БД. Возможно как нибудь текст извлекаемый из бд разбить на части которые будут влазить в заданный слой, а те части которые не будут помещаться, будут выводиться после нажатия на ссылку "читать далее". Посоветуйте пожалуйста, как можно решить такую проблему.
    1. (49)
  • Kikky

    Сообщения: 201 Репутация: N Группа: Кто попало

    Spritz 8 апреля 2011 г. 14:10, спустя 5 минут 1 секунду

    onzone, тебе нужен пагинатор, я тут когда-то говнокодил, воспользуйся поиском по форуму :)
    Спустя 30 сек.
    или же можешь реализовать с помощью JQuery.
  • onzone

    Сообщения: 77 Репутация: N Группа: Кто попало

    Spritz 8 апреля 2011 г. 14:43, спустя 32 минуты 44 секунды

    Kikky, пагинатор не совсем то , что нужно, как я понимаю пагинатор работает с несколькими записями в БД подсчитывая их и развивая на страницы в моём же случае запись в БД одна с большим объёмом текста, тоесть как я понимаю сначала надо извлечь эту запись а потом извлечнный текст разбить на части, вот только я не могу придумать как это сделать =(. Насчёт JQuery хорошая идея , я тоже думал об этом только я не в курсен какой плагин можно использовать (если не трудно подскажи плз).
  • Kikky

    Сообщения: 201 Репутация: N Группа: Кто попало

    Spritz 8 апреля 2011 г. 15:04, спустя 21 минуту 6 секунд

    onzone, есть разные пагинаторы, и такие как тебе нужен в том числе, попробуй сам написать, ребята на форуме тебе помогут.

    Ну а на счет JQuery, то сначала нужно извлечь текст из БД, потом разбить на две части: 1 - которая сразу будет видна(задашь по кол-ву символов или предложений), 2 - всё остальное. А в JQuery используй SlideUp/SlideDown ну или Show/HIde, событие - клик по ссылке 'Читать далее' :)
  • onzone

    Сообщения: 77 Репутация: N Группа: Кто попало

    Spritz 8 апреля 2011 г. 15:23, спустя 18 минут 58 секунд

    Kikky, У меня насчёт php решения только 1 идея + она не универсальна, 1) извлечь текст с поля БД 2) посчитать кол-во строк символов в извлечённом тексте, после чего разбить на n частей. Но существует 2 проблема, допустим заказчик захочет изменить высоту или ширину блока и текст не будет вписываться в него красиво =(. Поэтому надо искать какое-то другое решение.
  • Kikky

    Сообщения: 201 Репутация: N Группа: Кто попало

    Spritz 8 апреля 2011 г. 15:36, спустя 13 минут 23 секунды

    onzone, тогда будет проще решить задачу с помощью JS.
  • Givi

    Сообщения: 2284 Репутация: N Группа: Адекваты

    Spritz 8 апреля 2011 г. 17:25, спустя 1 час 48 минут 55 секунд

    onzone, невозможно получить автоматом неизвестное заранее количество необходимого текста, ибо это все равно что попросить сшит тебе костюм по размеру на 45 лет, когда тебе только 15.
  • fgets

    Сообщения: 1099 Репутация: N Группа: Кто попало

    Spritz 9 апреля 2011 г. 4:47, спустя 11 часов 22 минуты 7 секунд

    SELECT MID(mytext,0,150) FROM mytable

    еще есть на подобии этого: SUBSTRING, SUBSTRING_INDEX
    Спустя 173 сек.
    строишь пагинацию, сначала узнаешь
    SELECT LENGTH(mytext)
    потом задаешь берешь за основание кол-во символов, которое необходимо и делаешь также как и с LIMIT, но на JS такое будет намного удобнее да
    Спустя 203 сек.
    можно как вариант создать временную таблицу в оперативной памяти (MERGE или как там) с индексом на текстовое поле и одной только записью - и тогда ебать эту таблицу как угодно, она любые издевки над текстом будет в считанные доли секунды производить
  • onzone

    Сообщения: 77 Репутация: N Группа: Кто попало

    Spritz 9 апреля 2011 г. 9:08, спустя 4 часа 20 минут 33 секунды

    Givi, как я понял делать такую штуку, уже заранее зная какого размера будет текстовое поле и какое кол-во текста оно будет в себя помещать.
    У меня ваще была идея, извлечь текст с базы потом поделить его на n частей, после чего эти n частей поместить в массив и соотвественно вывести пагинатор =) Как говориться идея идти через Китай. fgets, спасибо за предложенные SQL решения попробую что-нить с ними похимичить. Знаю, что с JS всё намного проще, но в JS я дуб дубом, можно былобы это как-то реализовать при помощи связки JS+AJAX +PHP( был бы самый оптимальный вариант). Если ко знает подскажите, какой фреймворк легче всего юзать для решения этой проблемы*(и желательно какие методы).
  • kostyl

    Сообщения: 5203 Репутация: N Группа: Джедаи

    Spritz 9 апреля 2011 г. 9:18, спустя 10 минут 6 секунд

    кешируй в файловой системе записи. в сессии храни указатель - номер байта, где сейчас находишься читая эту запись…

Пожалуйста, авторизуйтесь, чтобы написать комментарий!