Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Выбор нужного колличества символов 
V
    Опции темы
N_Ghost
Дата 14.10.2009, 20:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 18.6.2008

Репутация: нет
Всего: нет



Есть база, в которой есть текстовые поля с довольно большими данными.
Возникла необходимость при выборе, выводить допустим первых 300 символов. Как превью.
Можно конечно перед выводом на страницу просто обрезать длинный текст средствами PHP, но получается что выбор из таблицы добавляет слишком много лишнего трафика.
Смотрел в сторону LEFT, но не совсем понял принцип работы. Точнее как с ним составить запрос.

Для примера:
Код

$q = mysql_query("SELECT * FROM Main WHERE ID ORDER BY Date DESC") or die (db_error());  
while ($row = mysql_fetch_assoc($q)) {
echo $row['Message'];
}

Выбирает всё что находится в поле Message.
Как составить запрос, чтоб было выбрано только 300 первых символов?
PM MAIL   Вверх
ТоляМБА
Дата 14.10.2009, 21:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Котэ
***


Профиль
Группа: Завсегдатай
Сообщений: 1607
Регистрация: 15.12.2004

Репутация: 4
Всего: 252



Код
SELECT Left(`Message `, 300), `Date` FROM `Main` ORDER BY `Date` DESC


PM   Вверх
N_Ghost
Дата 15.10.2009, 06:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 18.6.2008

Репутация: нет
Всего: нет



интересно, но не работает. может у меня выборка не правильная?
это таким макаром реализуется выборка части новости на порталах?
PM MAIL   Вверх
ТоляМБА
Дата 15.10.2009, 06:56 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Котэ
***


Профиль
Группа: Завсегдатай
Сообщений: 1607
Регистрация: 15.12.2004

Репутация: 4
Всего: 252



Цитата(N_Ghost @  15.10.2009,  09:45 Найти цитируемый пост)
не работает
Я просто обожаю такие пояснения! Сразу понятно - не работает и всё тут! А толи она выдаёт ошибку (чертовски интересно знать какую) толи ничего не выдаёт, толи выдаёт не то что автор хотел - это уж конечно военная тайна.

Цитата(N_Ghost @  15.10.2009,  09:45 Найти цитируемый пост)
может у меня выборка не правильная?
Ты выполни сначала запрос в phpMyAdmin. Посмотри результаты, а потом уж в php его пробуй  smile 
PM   Вверх
skyboy
Дата 15.10.2009, 09:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 14
Всего: 260



Цитата(N_Ghost @  15.10.2009,  05:45 Найти цитируемый пост)
это таким макаром реализуется выборка части новости на порталах? 

если и так, то только там, где новости добавляет действительно большое количество людей с разным уровнем компграмотности, либо количество новостей реально большое, либо новости добаляются автоматически(обработка RSS-каналов или ещё каким путем). Потому что единственно нормально выглядещее решение - при создании новости чтоб редактор сам создавал "краткий вариант", и только в таком случае:
1. не произойдет обрезка на действительно длинном "последнем слове"("был построен самый крупный синхр...(далее)" - вот и пойми, что там "синхрофазотрон", как будто рассказчику рот заткнули на середине), но при этом это "длинное слово" не разорвет верстку.
2. при вдумчивом редактировании "короткий вариант" может завлекать, давать часть информации, а не озадачивать бессмысленностью("Вчера, в 10 утра по московскому времени в городе ....(далее)" - что, где, зачем смотреть полный текст?)
PM MAIL   Вверх
N_Ghost
Дата 15.10.2009, 17:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 18.6.2008

Репутация: нет
Всего: нет



первое что проверил это в php, ничего не выдаёт, просто пустые строки.
без ошибок, без всего. сейчас пойду глубже.
в phpmyadmin работает без вопросов, поэтому и было подозрение на не верно составленный запрос с моей стороны.
про обрезание новостей, первое что приходит в голову, это создать два поля, короткий заголовок и полный текст. но тут базу править никто не даст, придётся извращатся только таким способом. требуют чтоб было определённое колличество символов и точки. 
интересна сама реализация, кто как решает такие вопросы. потому что по этой теме в инете совсем ничего не нашел.

PM MAIL   Вверх
youri
Дата 15.10.2009, 17:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 740
Регистрация: 17.4.2004

Репутация: нет
Всего: 16



Цитата(N_Ghost @  15.10.2009,  17:27 Найти цитируемый пост)
тут базу править никто не даст, придётся извращатся только таким способом

а может пускай сами извращаются? ;)

p.s. ты скажи хоть, это просто текст или html?

Это сообщение отредактировал(а) youri - 15.10.2009, 17:39
PM   Вверх
N_Ghost
Дата 15.10.2009, 17:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 18.6.2008

Репутация: нет
Всего: нет



Цитата(youri @ 15.10.2009,  15:39)
p.s. ты скажи хоть, это просто текст или html?

только текст, без тегов.
что делать, начальника сказала "надо", и не важно что это не твоё дело smile

Undefined index, на все поля в базе. вывод ошибок был по умолчанию выключен.

Это сообщение отредактировал(а) N_Ghost - 15.10.2009, 17:48
PM MAIL   Вверх
N_Ghost
Дата 15.10.2009, 18:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 18.6.2008

Репутация: нет
Всего: нет



всем спасибо, понял в чём ошибка.
Код

SELECT LEFT(Message, 300) Date,Message,Comment,Modif FROM Main WHERE CID=".$ID." ORDER BY Date DESC


надо было поля перечислить из которых выбирать.


Это сообщение отредактировал(а) N_Ghost - 15.10.2009, 18:41
PM MAIL   Вверх
skyboy
Дата 15.10.2009, 18:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 14
Всего: 260



Цитата(N_Ghost @  15.10.2009,  16:27 Найти цитируемый пост)
без ошибок, без всего. 

т.е. mysql_error() был вызван и ничего не вернул?
или не вызван?
лично меня смущает, как минимум, имя "Date" не заэкранированное, и отсутствие перед ним в последней версии запроса запятой.
PM MAIL   Вверх
N_Ghost
Дата 15.10.2009, 19:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 18.6.2008

Репутация: нет
Всего: нет



Цитата(skyboy @ 15.10.2009,  16:44)
т.е. mysql_error() был вызван и ничего не вернул?
или не вызван?
лично меня смущает, как минимум, имя "Date" не заэкранированное, и отсутствие перед ним в последней версии запроса запятой.

ничего не вернул, что меня тоже смутило.
были только: 
Notice: Undefined index: Comment in...
Notice: Undefined index: Message in...
да и в админе код отработал без ошибок.
про дату, там другое поле. это просто так сказать копия тестового скрипта, чтоб базу случайно не уронить.
а вот с запятой происходят инетересные вещи, если её нет, то всё работает как надо, а если оставить, то не выполняется LEFT
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Базы Данных | Следующая тема »


 




[ Время генерации скрипта: 0.0546 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.