作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
所以,我有这个查询:
$alt_user_result = execute_pdo_query("SELECT U.username, U.user_id, T.last_activity_time
FROM user_skills S, users U
LEFT JOIN user_status T ON U.user_id=T.user_id
WHERE S.user_id=U.user_id and S.task_type_id=? and S.permission='Yes';",
array($tablerow['task_type_id']));
我正在做这样的事情来显示状态:
foreach($alt_user_result as $cur_user) {
if($cur_user['user_id'] != 1){
if( (time(date('Y-m-d H:i:s')) - time($cur_user['last_activity_time'])) < 300 ){
echo "<option value='$cur_user[user_id]'>$cur_user[username] | online</option>";
}
else if( (time(date('Y-m-d H:i:s')) - time($cur_user['last_activity_time'])) >300){
if( (time(date('Y-m-d H:i:s')) - time($cur_user['last_activity_time']))<1800 ) {
echo "<option value='$cur_user[user_id]'>$cur_user[username] | idle</option>";
}
}
else if( (time(date('Y-m-d H:i:s')) - time($cur_user['last_activity_time']))>1800 ){
echo "<option value='$cur_user[user_id]'>$cur_user[username] | offline</option>";
}
}
var_dump((time(date('Y-m-d H:i:s')) - time($cur_user['last_activity_time'])));
}
echo "<input type='submit' name='reassign' value='Reassign'/></select></form>";
}
我的表格中的last_activity_time
是:datetime
。
表中的var_dump
结果只有零并且不正确,如果我删除time()
它将显示时间之间的差异,但与time()
它中断了;
如果上次事件 <= 5 分钟 => 状态:在线,我需要做什么
如果时间 > 5 分钟且 <= 30 分钟 => 状态:空闲
如果超过 30 分钟 => 状态:离线。
我做错了什么?有什么想法吗?
最佳答案
可以用MySQL解决 TIMESTAMPDIFF() 和 CASE 功能
SELECT * , TIMESTAMPDIFF(
MINUTE , last_active, NOW( ) ) AS minuteDiff,
CASE
WHEN TIMESTAMPDIFF( MINUTE , last_active, NOW( ) ) >30 THEN 'Offline'
WHEN TIMESTAMPDIFF( MINUTE , last_active, NOW( ) ) > 4 THEN 'Idle'
WHEN TIMESTAMPDIFF( MINUTE , last_active, NOW( ) ) THEN 'Online'
END AS userStatus
FROM tbl_time
现在检查userStatus
列的条件
注意:您可以使用图像或任何您想要的东西,这并不重要。
上面的查询之后,您可以按照下面的方式在 php 中显示它
<select name ="selectName" id ="selectID" >
foreach($alt_user_result as $cu)
{
switch($cu['userStatus'])
{
case 'Online' :
$txt = 'Online';
$img = 'images/online.png';
break;
case 'Idle' :
$txt = 'Idle';
$img = 'images/idle.png';
break;
case 'Offline' :
$txt = 'Offline';
$img = 'images/offline.png';
break;
default :
// here you can set default value
}
if($cu['user_id'] != 1) {
echo "<option value='$cu[user_id]'> $cu['username'] | $txt
/* or you can show respective image */
| <img src ='$img' alt='$txt' title='$txt'/>
</option> ";
} // end of if
} // end of foreach
</select>
关于php - 如何在 SQL 表中显示上次事件的在线/离线状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11883830/
我是一名优秀的程序员,十分优秀!