Senza conoscere la struttura del tuo DB è una specie di ipotesi.
if ($time >= $loggedtime)
Stai confrontando una stringa come '2012-11-01 10:10:10' con qualsiasi $time
è nel tuo DB. Questo sembra essere il problema qui. Potresti/dovresti usare timestamp UNIX. Possono essere confrontati facilmente.
Se $time
fosse un timestamp UNIX che potresti semplicemente fare:
if ($time >= time()-300)
MODIFICA:
Modifica la tua query per ottenere un timestamp UNIX per online
$query = 'SELECT userid, handle, UNIX_TIMESTAMP(online) as online FROM ^users ORDER BY userid ASC';
EDIT2: Per chiarire meglio:nella tua prima versione stavi confrontando due date nel modulo '2012-11-01 10:10:10'
if ('2012-11-01 10:10:10' < '2012-11-02 10:10:10')
Questo non può funzionare in PHP - è come fare:
if ('apples' < 'bananas')
Devi confrontare i numeri. Pertanto ho suggerito di utilizzare timestamp Unix che possono essere facilmente confrontati.