|
|
|
|
|
для: semirax
(23.01.2008 в 20:21)
| | >а как насчет
>
>SELECT post.id, post.msg, coalesce((NOW() - online.lasthit),' время не указано ') AS lasthitint FROM post LEFT JOIN online ON (post.id=online.id)
Прошу прощения, вроде работает:) . В браузере видать у меня был глюк (страница бралась из кеша). | |
|
|
|
|
|
|
|
для: not detected
(24.01.2008 в 05:52)
| | Может я не правильно выбрал структуру таблиц? Или ещё чего?
И вообще как делают подобные вещи, подскажите пожалуйста.
З.Ы.Просто из таблицы online удаляются id, время авторизации которых истекло, поэтом получается такая байда :( . Есть вариант не удалять эти строки, тогда думаю будет все нормально. Просто не охото держать лишнюю инфу в этой таблице. | |
|
|
|
|
|
|
|
для: semirax
(23.01.2008 в 20:21)
| | Неа, не работает так, как мне надо :( . Здесь опять, либо выпадают посты (если нет id в online) из результата выборки, либо в lasthitint значение другои строки. | |
|
|
|
|
|
|
|
для: not detected
(23.01.2008 в 18:16)
| | а как насчет
SELECT post.id, post.msg, coalesce((NOW() - online.lasthit),' время не указано ') AS lasthitint FROM post LEFT JOIN online ON (post.id=online.id) | |
|
|
|
|
|
|
|
для: not detected
(23.01.2008 в 14:04)
| | Пробовал сделать так
$q="SELECT post.id, post.msg, (NOW() - online.lasthit) AS lasthitint FROM post, online WHERE post.id=online.id";
| , но в этом случае если в таблице online нет строки с id юзера, то пост не попадает в результат выборки :( .
Добавив в условие 1=1 :
$q="SELECT post.id, post.msg, (NOW() - online.lasthit) AS lasthitint FROM post, online WHERE post.id=online.id OR '1'='1'";
| . И тут получаю что если в online нет строки с id юзера, то в алиасе lasthitint будет значение предыдущей строки (вроде так) , а мне надо чтоб если в online нет строки с id из post, то в lasthitint должно быть значение 900 например. | |
|
|
|
|
|
|
| Здрастсвуйте:) .
Хочу сделать на сайте (в форуме, чате и пр.) чтоб в сообщениях возле ника выводилась инфа типа on/off (Online или Offline пользователь в данный момент).
вот есть две таблицы, одна с постами post (столбцы: id - id автора поста, msg - сам пост ), а другая таблица online (столбцы: id - id пользователя (он же id автора поста в таблице post), lasthit - время последнего хита).
<?php
...
$q="SELECT id, msg FROM post LIMIT $start,$total";
$sqlres=mysql_query($q);
...
for(){ //здесь цикл, в котором выводим результат $sqlres
... list($id,$msg)=mysql_fetch_row($sqlres);
...
$sqlres2 = mysql_query("SELECT id FROM online WHERE id='$id' and NOW() - lasthit < 300");
if(mysql_num_rows($sqlres2) == 1) echo'On'; else echo'Off';
...
}//конец цикла
...
?>
| . Можно ли это сделать както по другому? Чтоб небыло запросов к БД внутри цикла. | |
|
|
|
|