如何在线显示用户数量?

时间:2013-12-27 17:02:48

标签: php

我使用radipanel为我的网站创建了一个工作人员面板,但是我的思绪已经空白了我已将其编码为显示当前在线用户,但我完全忘记了如何在线显示用户数量。

下面是我必须在线显示用户名称的代码;

<?php 

                $query = $db->query( "SELECT DISTINCT user_id FROM sessions WHERE user_id != '0'" ); 
                    $i = 1; 

                while( $array = $db->assoc( $query ) ) { 

                    $queryU = $db->query( "SELECT * FROM users WHERE id = '{$array['user_id']}'" ); 
                    $arrayU = $db->assoc( $queryU ); 

                    $queryUG = $db->query( "SELECT * FROM usergroups WHERE id = '{$arrayU['displaygroup']}'" ); 
                    $arrayUG = $db->assoc( $queryUG ); 

                    echo "<a href=\"core.profile?u={$arrayU['username']}\" style=\"color: #{$arrayUG['colour']}; font-weight: bold;\">"; 
                    echo $arrayU['username'];
                                            $coverstatus2 = $arrayU['cover'];
                                            if($coverstatus2 == 1) {
                                            echo " <b style=\"color:#89c35c;\">+</b>";
                                            }elseif($coverstatus2 == 2) {
                                            echo " <b style=\"color:#c24641;\">-</b>";
                                            }elseif($coverstatus2 == 0) {
                                            echo "";
                                            }
                    echo "</a>"; 
                    echo ( $i == $db->num( $query ) ) ? '' : '&nbsp;&nbsp;&nbsp;'; 

                    $i++; 

                } 

                ?>

但我如何显示数字?

例如我想要的是

在线用户(此处为号码) 乔希,汤姆,马克

所以它会说用户在线(3)

那么显示数字的代码是什么?

谢谢, 约什

4 个答案:

答案 0 :(得分:0)

在while()语句上放置一个int ++计数器,这样每次迭代都会计算用户。或者在不打印名称的情况下使用count()方法或类似方法。

答案 1 :(得分:0)

我认为这对你有用。 按照步骤进行操作。

  1. 首先在用户表中添加一列,用于将用户上次活动存储在 unix_timestamp 中,这是您在php中使用 time()方法获得的。因此,每当用户执行某些活动时,它都会更新到表以供相应的用户使用。 现在,您有一个显示用户上次活动时间的列。
  2. 2.每当用户在服务器上执行某些活动(如刷新页面等)时,每次都会使用time()方法更新last_activity列。

    现在根据60个secoonds对你的时间进行查询。

      

    $ query =“select * from user_table where last_activity&gt;(time() - 60)   ;“

    此查询会返回在线用户的数量及其数据。

    希望对你有所帮助。

答案 2 :(得分:0)

您可以在用户的​​表格中添加名为“isonline”的行。

$onlineppl=mysql_num_rows(mysql_query("SELECT * FROM users WHERE isonline='1'");

mysql_num_rows可以帮助您使用select计算行数。

用户注销时只需要在db。

上更新isonline='0'

我希望能帮助一下。

答案 3 :(得分:0)

据我所知,您可以从代码中获取所有当前会话的数组,然后使用while语句迭代来回显每个用户。在你的i = 1之后;在你的while语句之前

$array = $db->assoc( $query );
$count = count($array);

然后你可以在页面上回显$ count 然后

while ($array) {
    // Your other code
}