Jump to content
  • 0

вывод архива сообщений


fiver
 Share

Question

Привет!

Возникла необходимость вывода архива сообщений. В принципе как это организовать в общем, я представление имею, НО вот как это организовать ПРАВИЛЬНО, хочу узнать у профи этого форума.

Есть поле `time` в котором записывается дата и время добавления сообщения в формате: 130812124006 где цифры читать так:

13(год) 08(мес) 12(дата) 12:40:06(время).

Надо вывести архив в виде год а в нем все месяца, а при нажатии уже на месяц, выводим все сообщения в этом месяце по дням.

Собственно весь вопрос в том, как эффективно все это разложить по годам и месяцам, с минимальным кол-вом запросов к БД.

Т.е. в грамотно составить sql запрос.

Буду признателен всем за толковые идеи.

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

Edited by fiver
Link to comment
Share on other sites

2 answers to this question

Recommended Posts

  • 0

Если нужно сначала вывести некий иерархический список типа:

гггг

мм мм мм мм мм

для навигации по архиву сообщений, а сам список сообщений выводить толь за выбранный год и месяц(не вываливать весь список). Тогда вам нужно будет 2 запроса: на выборку данных для организации навигации по архиву и непосредственно на выборку самих сообщений за указанный год и месяц. В таком случае поле time лучше иметь типа DateTime или timestamp. Запросы для time - DateTime с индексом:


SELECT DISTINCT DATE_FORMAT(`time`, '%m %Y') FROM table;
SELECT * FROM table WHERE `time` BETWEEN STR_TO_DATE('дата начало месяяца', '%Y-%m-%d %H:%i:%s') AND STR_TO_DATE('дата конец месяяца', '%Y-%m-%d %H:%i:%s');

Если нужно просто вывалить весь список сообщений и оформить его в виде иерархии, тогда sql вам в этом не помошник, выбирайте необходимые поля, можно даже без сортировки. А иерархию выстраивайте скриптом.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy