//check which faction members are online
$sql = mysql_query("SELECT * FROM ".TBL_ACTIVE_USERS."
WHERE faction=$userfaction_id ORDER BY timestamp DESC,username");
//no '' around var as it is an integer, so php doesn't expeect it to be string
$numrows = mysql_numrows($sql);//gets number of members online
if($numrows == 1){ echo 'You are the only faction member online'; }
else{
while($online = mysql_fetch_array($sql)){
echo '<a href="#" class="light_grey">'.$online['username'].'</a>';
echo ', ';
}//loops round all online users
//echoing their usernames
}
如果只有一名成员在线,则上述代码可以正常工作。 问题实际上是美学原因。
如果有多个成员在线,则查询显示:
管理员,系统,
我想知道如何在最后的结果(最后一个成员在线的while(){}子句中这样做)我可以删除逗号吗?有没有办法将while语句限制为$ numrows-1或其他类似的东西?然后在名字后面没有逗号和空格的情况下回显最后一个用户?
答案 0 :(得分:5)
一种优雅的方法是使用数组和implode()
。
$elements = array();
while($online = mysql_fetch_array($sql)){
array_push ($elements, '<a href="#" class="light_grey">'.
$online['username'].'</a>');
}
echo implode(", ", $elements);
答案 1 :(得分:1)
implode
是一种方法,正如Pekka所示,另一种方法就是这样做:
$first = true;
while($online = mysql_fetch_array($sql)){
if (!$first) {
echo ', ';
$first = false;
}
echo '<a href="#" class="light_grey">',$online['username'],'</a>';
}
如果有很多在线成员,由于不需要构建临时数组,应该比implode
方式更有效。
答案 2 :(得分:0)
<?php
$i = 0;
while{
if($i > $numrows)
{
echo ', ';
}
$i++;
}