Zonder uw DB-structuur te kennen, is het een beetje een gok.
if ($time >= $loggedtime)
Je vergelijkt een string zoals '2012-11-01 10:10:10' met wat dan ook $time
staat in je DB. Dit lijkt hier het probleem te zijn. Je zou UNIX-tijdstempels kunnen/moeten gebruiken. Ze kunnen gemakkelijk worden vergeleken.
Als $time
waren een UNIX-tijdstempel die je gewoon zou kunnen doen:
if ($time >= time()-300)
BEWERKEN:
Wijzig uw zoekopdracht om een UNIX-tijdstempel te krijgen voor online
$query = 'SELECT userid, handle, UNIX_TIMESTAMP(online) as online FROM ^users ORDER BY userid ASC';
EDIT2: Om het duidelijker te maken:in je eerste versie vergeleek je twee datums in de vorm '2012-11-01 10:10:10'
if ('2012-11-01 10:10:10' < '2012-11-02 10:10:10')
Dit kan niet werken in PHP - het is alsof je doet:
if ('apples' < 'bananas')
Je moet cijfers vergelijken. Daarom stelde ik voor om Unix-tijdstempels te gebruiken die gemakkelijk kunnen worden vergeleken.