Sem conhecer sua estrutura de banco de dados, é meio que um palpite.
if ($time >= $loggedtime)
Você está comparando uma string como '2012-11-01 10:10:10' com qualquer
$time
está no seu banco de dados. Este parece ser o problema aqui. Você pode/deve usar timestamps UNIX. Eles podem ser comparados facilmente. Se
$time
eram um timestamp UNIX que você poderia fazer:if ($time >= time()-300)
EDITAR:
Altere sua consulta para obter um timestamp UNIX para
online
$query = 'SELECT userid, handle, UNIX_TIMESTAMP(online) as online FROM ^users ORDER BY userid ASC';
EDIT2: Para deixar mais claro:Na sua primeira versão você estava comparando duas datas no formato '2012-11-01 10:10:10'
if ('2012-11-01 10:10:10' < '2012-11-02 10:10:10')
Isso não pode funcionar em PHP - é como fazer:
if ('apples' < 'bananas')
Você tem que comparar os números. Portanto, sugeri usar timestamps unix que podem ser facilmente comparados.