|
|
|
| Сразу к делу.
Есть две таблицы: forum_theme(id_theme,theme,id_user,date_create) и forum_message(id_message, id_theme, id_user, message, date_create). Связаны по индексу id_theme.
Форум уже почти готов. Только , если кто-то отвечает на тему, находящуюся где-нить в середине, то она там и остается. А как можно просто сделать, чтобы эта тема с последним по времени ответом перемещалась в самый вверх.
Я написал один очень длинный скрипт для этого в котором три вложенных цикла for (). Кажется он будет работать очень долго. Если надо то я его опишу словами (нет сейчас с собой исходника).
P.S. Скрипт работает правильно. Мне нужен другой вариант попроще! | |
|
|
|
|
автор: glsv (Дизайнер) (21.09.2005 в 13:34) |
|
|
для: holst
(21.09.2005 в 12:44)
| | >сли кто-то отвечает на тему, находящуюся где-нить в середине, то она там и остается. А как можно просто сделать, чтобы эта тема с последним по времени ответом перемещалась в самый вверх.
При добавлении нового сообщения в тему обновляйте поле date_create таблицы forum_theme. А при выводе списка тем сортируйте по этому полю. | |
|
|
|
|
|
|
|
для: glsv (Дизайнер)
(21.09.2005 в 13:34)
| | Тогда еще один вопрос. А как время вставлять в MySql чтобы оно отображалось в формате дд.мм.гг чч.мм.сс. А то по умолчанию оно там хранится не поймешь в каком виде. | |
|
|
|
|
|
|
|
для: holst
(22.09.2005 в 11:19)
| | Время форматируется в операторе SELECT при помощи функции DATE_FORMAT(), подробнее о которой можно почитать в теме по ссылке http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=5388 | |
|
|
|
|
|
|
|
для: cheops
(22.09.2005 в 14:47)
| | Я попробовал написать так как в той теме, но выдается ошибка запроса. Что делать? А дату функцией DATE_FORMAT() надо вставлять в поле типа "date" или нет???
Сделал по-другому и вроде все получилось:
$date_create=date("d.m.Y H.i.s");
@mysql_query("INSERT INTO forum_theme (id_user, theme, date_create) values('$id_user', '$theme', '$date_create')");
Только поле "date_create" имеет тип "varchar". Вот это меня и смущает. MySql может понять что это дата или нет? Мне просто интересно так вообще можно делать: сортировать по полю date_create если оно не "date"? | |
|
|
|
|
|
|
|
для: holst
(24.09.2005 в 13:43)
| | Нет DATE_FORMAT() работает только с полями, чей тип является временной с varchar - это не пройдёт. Т.е. добавление текущей даты должно происходить как обычно, через функцию NOW(), а саму дату форматировать уже на выходе
@mysql_query("INSERT INTO forum_theme (id_user, theme, date_create) values('$id_user', '$theme', NOW())");
|
| |
|
|
|
|
|
|
|
для: cheops
(24.09.2005 в 13:47)
| | Как я понял функция NOW() возвращает время(или нет).Вставлять ее надо в поле типа "date".
А как форматировать дату на выходе? | |
|
|
|
|
|
|
|
для: HoLsT
(24.09.2005 в 13:57)
| | Да NOW() - возвращает время, автоматически подстраиваясь под временной тип. А вот уже форматировать на выходе любой временной тип можно при помощи функции DATE_FORMAT()
SELECT DATE_FORMAT(putdate,'%d.%m.%Y') AS putdate FROM tbl
|
В этом запросе в поле putdate будет дата в формате '24.09.2005' | |
|
|
|