需要在线显示姓名玩家的帮助(PHP)
我需要帮助在我的网站上显示在线玩家的名字 我已经完成了所有工作,但当我选择排名0(成员)时,你会看到1000名玩家在线/离线 我希望它只显示玩家(在线)和隐藏玩家(离线)我希望你知道我的意思 我的代码:需要在线显示姓名玩家的帮助(PHP),php,Php,我需要帮助在我的网站上显示在线玩家的名字 我已经完成了所有工作,但当我选择排名0(成员)时,你会看到1000名玩家在线/离线 我希望它只显示玩家(在线)和隐藏玩家(离线)我希望你知道我的意思 我的代码: <?php $findAdmins = $odb->query("SELECT * FROM `users` WHERE `rank` = '1'"); while($rowAdmins = $findAdmins->fetch(
<?php
$findAdmins = $odb->query("SELECT * FROM `users` WHERE `rank` = '1'");
while($rowAdmins = $findAdmins->fetch(PDO::FETCH_BOTH)) {
$diffOnline = time() - $rowAdmins['activity'];
$countOnline = $odb->prepare("SELECT COUNT(*) FROM `users` WHERE `username` = :username AND {$diffOnline} < 60");
$countOnline->execute(array(':username' => $rowAdmins['username']));
$onlineCount = $countOnline->fetchColumn(0);
$logo = "fa fa-ban";
if($onlineCount == "1") {
echo '<li><a href="#"><i></i><center>'. $rowAdmins['username'] .' <span class="labelon " style="border-radius:3px; color:white; float:right; font-weight:500; padding:6px; background-color:#1388a0;">Online</span></center></a></li>';
} else {
echo '<li><a href="#"><i></i><center>'. $rowAdmins['username'] .' <span class="labelon " style="border-radius:3px; color:white; float:right; font-weight:500; padding:6px; background-color:#f71c11;">Offline</span></center></a></li>';
}
}
?>
您已经把这件事弄得太复杂了-您想要的东西可以在一个查询中更有效地完成。而且,如你所说,如果你只想让它显示在线的玩家,那么你不需要一段代码来回应“离线”文本。如果这是您的要求,那么我不确定您为什么要添加该行:-)
此查询将返回具有请求排名的所有“在线”用户:
SELECT * FROM `users` WHERE `rank` = 0 and unix_timestamp() - `activity` < 60
从'users'中选择*,其中'rank`=0和unix\u timestamp()-'activity`<60
演示:
因此,PHP代码可以简化为:
$findAdmins = $odb->query("SELECT * FROM `users` WHERE `rank` = 0 and unix_timestamp() - `activity` < 60");
while($rowAdmins = $findAdmins->fetch(PDO::FETCH_BOTH)) {
echo '<li><a href="#"><i></i><center>'. $rowAdmins['username'] .' <span class="labelon" style="border-radius:3px; color:white; float:right; font-weight:500; padding:6px; background-color:#1388a0;">Online</span></center></a></li>'
}
$findAdmins=$odb->query(“从`users`中选择*,其中`rank`=0,unix_timestamp()-`activity`<60”);
而($rowAdmins=$findAdmins->fetch(PDO::fetch_两者)){
回音“”
}
这将返回所有具有该排名的在线用户,并为每个用户回显一个链接
另一方面,HTML中的
标记是-您应该使用CSStext align
属性将文本居中。考虑改变你的代码的这个部分。 为什么你有第二个查询?如果判断$onlineCount==1
,则用户名字段是唯一的,$diffOnline
变量在计算后保持不变。与常数60的比较是固定的。请尝试以下代码:
$findAdmins = $odb->query("SELECT * FROM `users` WHERE `rank` = '0'");
while($rowAdmins = $findAdmins->fetch(PDO::FETCH_BOTH)) {
$logo = "fa fa-ban";
if(time() - $rowAdmins['activity'] < 60) {
echo '<li><a href="#"><i></i><center>'. $rowAdmins['username'] .' <span class="labelon " style="border-radius:3px; color:white; float:right; font-weight:500; padding:6px; background-color:#1388a0;">Online</span></center></a></li>';
} else {
echo '<li><a href="#"><i></i><center>'. $rowAdmins['username'] .' <span class="labelon " style="border-radius:3px; color:white; float:right; font-weight:500; padding:6px; background-color:#f71c11;">Offline</span></center></a></li>';
}
}
$findAdmins=$odb->query(“从`users`中选择*,其中`rank`='0');
而($rowAdmins=$findAdmins->fetch(PDO::fetch_两者)){
$logo=“fa-ban”;
如果(time()-$rowAdmins['activity']<60){
回音“”;
}否则{
回音“”;
}
}
这个问题是否解决了?你已经给出了答案,但没有被接受。