Im using radipanel to create a staff panel for my website, but my mind has gone blank i have coded this to display the users currently online, but i completely forgot how to display the numbers of users online.
Heres the code i have to display the names of users online;
<?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 ) ) ? '' : ' ';
$i++;
}
?>
But how do i display the number?
For example what i want is
Users Online(Number here) Josh, Tom, Mark
So it would say Users Online (3)
So whats the code to display the number?
Thanks, Josh
As far as I can tell from your code you are getting an array of all current sessions, then using the while statement iterations to echo off each user. After your i=1; and before your while statement put
$array = $db->assoc( $query );
$count = count($array);
then you can echo $count where you want it on the page then
while ($array) {
// Your other code
}
Put an int++ counter on the while() statement so with each iteration it calculates the users. Or to do it without printing the names use a count() method or something similar.
I think it's work for you. Follow the steps.
2.Now update last_activity columns with time() method everytime whenever a user do some activity on your server like refreshing page etc.
Now run a query on your time based like for 60 secoonds.
$query="select * from user_table where last_activity > ( time() - 60 ) ;"
This query return you number of online user as well as their data.
Hope Its helpfull to you.
You can add a row called "isonline" to your user's table.
$onlineppl=mysql_num_rows(mysql_query("SELECT * FROM users WHERE isonline='1'");
mysql_num_rows
can help you to count your rows with select.
You when users log off only need to update isonline='0'
on db.
I hope to help a little.