Всем добра! Парни, туплю с диалогами что-то... Обычный чат, сообщение, дата. НО! Хотелось бы дату выводить 1 раз. (как во Вконтакте) Т.е. написал вчера будет 12 февраля и 100500 сообщений без даты. Написал сегодня, будет 13 февраля и ниже сообщения. В бд лежит каждое сообщение с датой. Вывожу в цикле, аякс. Сам запрос: PHP: SELECT *,db_mail_full.date as mess_data FROM db_mail_full, db_mail_id WHERE db_mail_id.id = db_mail_full.id_ticket AND db_mail_full.id_ticket = ? ORDER BY db_mail_full.id DESC LIMIT 20 Пробовал с GROUP BY FROM_UNIXTIME(db_mail_full.date, '%Y-%m-%d') , но это видимо не выход. Спасибо всем кто подскажет куда копать!
В запросе этого не добьешься, потому как там нет понятия текущий, предыдущий, последующий... Проще всего при выводе это делать, 1) если переменная пуста - то вывел сообщение с датой - запомнил дату в переменную, 2) следующее сообщение перед тем как вывести - сверяешь с этой переменной, если дата та-же, её не выводишь, если изменилась - то в п 1 идем, и так в цикле все выводишь
@ADSoft, в БД дата в UNIX, поэтому всегда будет разной. Число сверять!? Тогда 12 января и 15 февраля будет хрень. В общем решение НЕ найдено.
Код (Text): SELECT *, db_mail_full.date as mess_data, FROM_UNIX_TIME(db_mail_full.date, '%Y-%m-%d') as chat_date FROM db_mail_full, db_mail_id WHERE db_mail_id.id = db_mail_full.id_ticket AND db_mail_full.id_ticket = ? ORDER BY db_main_full.date DESC LIMIT 20 Результатирующая выборка из базы будет с сообщениями от самого последнего до самого раннего (сортировка по unix дате, надеюсь оно так работает). В каждой строчке будет дополнительное поле chat_date (см.запрос). Для сообщений, написанных в один и тот же день значение этого поля будет одинаковым, так как время не учитывается ('%Y-%m-%d'). Дальше уже то, что советовал @ADSoft.