Utan att känna till din DB-struktur är det en slags gissning.
if ($time >= $loggedtime)
Du jämför en sträng som "2012-11-01 10:10:10" med vilken $time
som helst finns i din DB. Detta verkar vara problemet här. Du kan/bör använda UNIX-tidsstämplar. De kan enkelt jämföras.
Om $time
var en UNIX-tidsstämpel som du bara kunde göra:
if ($time >= time()-300)
EDIT:
Ändra din fråga för att få en UNIX-tidsstämpel för online
$query = 'SELECT userid, handle, UNIX_TIMESTAMP(online) as online FROM ^users ORDER BY userid ASC';
EDIT2: För att göra det mer tydligt:I din första version jämförde du två datum i formen '2012-11-01 10:10:10'
if ('2012-11-01 10:10:10' < '2012-11-02 10:10:10')
Detta kan inte fungera i PHP - det är som att göra:
if ('apples' < 'bananas')
Man måste jämföra siffror. Därför föreslog jag att använda unix-tidsstämplar som lätt kan jämföras.