最初にオンライン ユーザー ラベルを表示し、その後すべてのオンライン ユーザーを表示し、その後最初のラベルを終了する必要があります。<optgroup>
Offline と Idle も同様です。
コード:
foreach($alt_user_result as $cur_user) {
if( $cur_user[user_status]=='online') {
echo "<option class='green_status' value='$cur_user[user_id]'>$cur_user[username] | $cur_user[user_status]
</option>";
}
elseif( $cur_user[user_status]=='idle') {
echo "<option class='yellow_status' value='$cur_user[user_id]'>$cur_user[username] | $cur_user[user_status]
</option>";
}
elseif( $cur_user[user_status]=='offline') {
echo "<option class='gray_status' value='$cur_user[user_id]'>$cur_user[username] | $cur_user[user_status]
</option>";
}
}
たとえば、<optgroup>
前に追加しようとしましたが、次のようになります<option class='gray_status'
<optgroup><option></option><optgroup>
<optgroup><option></option><optgroup>
<optgroup><option></option><optgroup>
<optgroup><option></option><optgroup>
<optgroup><option></option><optgroup>
そして私はこのようにしたい:
<optgroup lable="online">
<option></option>
<option></option>
<option></option>
<optgroup>
<optgroup lable="offline">
<option></option>
<option></option>
<option></option>
<optgroup>
......
クエリ:
$alt_user_result = execute_pdo_query("SELECT U.username, U.user_id, T.last_activity_time,
case WHEN TIMESTAMPDIFF( MINUTE, T.last_activity_time ,NOW() ) <= 5 THEN 'online'
WHEN ( TIMESTAMPDIFF( MINUTE, T.last_activity_time ,NOW() ) > 5 AND
TIMESTAMPDIFF( MINUTE, T.last_activity_time ,NOW() ) <=30 ) THEN 'idle'
ELSE 'offline' end as user_status
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']));
事前に助けてくれてありがとう!