ситуация:
пытаюсь сообразить удобный модуль почты...
Есть входящие и исходящие письма...
//исходящие
$req = mysql_query("SELECT `mail_msg`.`id` as `mid`,`mail_msg`.`time` as `tm`, `mail_msg`.`from_out` as `name`, `mail_msg`.`id_kont` as `user_id`, `mail_msg`.*, `users`.* FROM `mail_msg` LEFT JOIN `users` ON `mail_msg`.`id_kont`=`users`.`id` WHERE `mail_msg`.`id_user`='" . $user_id . "' AND `mail_msg`.`sys`='1' AND `mail_msg`.`delete`!='" . $user_id . "' ORDER BY `mail_msg`.`time` DESC LIMIT $start, $kmess");
//входящие
$req = mysql_query("SELECT `mail_msg`.`id` as `mid`, `mail_msg`.`time` as `tm`, `mail_msg`.`from` as `name`, `mail_msg`.`id_user` as `user_id`, `mail_msg`.*, `users`.* FROM `mail_msg` LEFT JOIN `users` ON `mail_msg`.`id_user`=`users`.`id` WHERE `mail_msg`.`id_kont`='" . $user_id . "' AND `mail_msg`.`sys`='1' AND `mail_msg`.`delete`!='" . $user_id . "' AND `mail_msg`.`spam`='1' ORDER BY `mail_msg`.`time` DESC LIMIT $start, $kmess");
структура таблицы 'mail_msg' такая:
id|id_user|id_kont|time|from|from_out|tema|msg|
мне нужно сгруппировать исходящие и входящие в одно целое с сортировкой по времени...
Пытаюсь сделать так:
$req = mysql_query("SELECT `mail_msg`.*, `users`.* FROM `mail_msg` LEFT JOIN `users` ON `mail_msg`.`id_user`=`users`.`id` WHERE `mail_msg`.`id_user`='" . $user_id . "' AND`mail_msg`.`id_kont`='" . $user_id . "' AND `mail_msg`.`sys`='1' AND `mail_msg`.`delete`!='" . $user_id . "'
GROUP BY `mail_msg`.`from`
ORDER BY `mail_msg`.`time`
DESC LIMIT $start, $kmess");
и не получается... Причем когда делаю GROUP отдельно входящих или исходящих всё прекрасно получается:
//одни входящие
$req = mysql_query("SELECT `mail_msg`.*, `users`.* FROM `mail_msg` LEFT JOIN `users` ON `mail_msg`.`id_user`=`users`.`id` WHERE `mail_msg`.`id_kont`='" . $user_id . "' AND `mail_msg`.`sys`='1' AND `mail_msg`.`delete`!='" . $user_id . "'
GROUP BY `mail_msg`.`from`
ORDER BY `mail_msg`.`time`
DESC LIMIT $start, $kmess");
кто подскажет как сделать такую штуку?
Зы.скрин пример сгруппированных входящих...
короче я тут мозг всем взорвал..
кто нибудь понял о чем я?
зачем делать 2 записи входящему письму и исходящему?
Достаточно сделать 1 запись и выводить ее в входящих и исходящих. И проблема отвалится. Гг.
Максим (11.06.2011/23:21)
зачем делать 2 записи входящему письму и исходящему?
Достаточно сделать 1 запись и выводить ее в входящих и исходящих. И проблема отвалится. Гг.
согласен... Но почта уже написана так и работает давненько... Просто хочется сделать ещё удобнее, а переписывать все записи и запросы нет времени и желания...
Теоритически понимаю что можно сделать то что я хочу, а практически не могу воплотить...
Lance (12.06.2011/06:02)
исходя из первых двух запросов видно, что в входящих `mail_msg`.`from`, а в исходящих `mail_msg`.`from_out`
[php]$req = mysql_query("SELECT `mail_msg`.*, `users`.* FROM `mail_msg` LEFT JOIN `users` O
немного не так... 'from' это кому письмо, а 'from_out' это от кого письмо...
Сейчас почта имеет вид:
входящие
исходящие
и от туда можно попасть в историю переписки...
Скрин: входящие
а сгрупировав хочу сделать список тех с кем велась переписка, при нажатии на ник сразу попадаешь в историю переписки с тем на кого нажал...
Скрин того что не до конца получается...
какбэ групировать нужно по никам из 'from' если 'from_out'=hooligan
и по 'from_out' если 'from'=hooligan
как то так... Не знаю как ещё объяснить...
Можно пример если понятно что я хочу, как это сделать? Я ещё новичек и многое не знаю просто...
hooligan, Если я правильно понял, можно так сделать
$count = mysql_num_rows(mysql_query("SELECT *
FROM `mail_msg`
WHERE id_user='" . $user_id . "' or id_kont='" . $user_id .
"' GROUP BY id_kont;"));
if ($count > 0) {
$album = mysql_query("SELECT *
FROM `mail_msg`
WHERE id_user='" . $user_id . "' or id_kont='" . $user_id .
"' GROUP BY id_kont LIMIT " . $start . "," . $kmess . ";");
while ($add = mysql_fetch_array($album)) {
$total_out = mysql_num_rows(mysql_query("SELECT *
FROM `mail_msg`
WHERE id_user='" . $user_id . "' and id_kont='" . $add['id_kont'] . "';"));
$total = mysql_num_rows(mysql_query("SELECT *
FROM `mail_msg`
WHERE id_kont='" . $user_id . "' and id_user='" . $add['id_user'] . "';"));
$user = mysql_fetch_array(mysql_query("SELECT `name`
FROM `users`
WHERE id='" . $add['id_kont'] . "' LIMIT 1;"));
echo $user['name'] . '(' . $total . '/' . $total_out . ')<br />';
}
echo '<div class="phdr">Всего: ' . $count . '</div>';
}