Bez znalosti vaší DB struktury je to jen odhad.
if ($time >= $loggedtime)
Porovnáváte řetězec jako '2012-11-01 10:10:10' s jakýmkoli $time
je ve vaší DB. Zdá se, že toto je problém zde. Mohl/a byste použít časová razítka UNIX. Lze je snadno porovnávat.
Pokud $time
byly časové razítko UNIX, které jste mohli udělat:
if ($time >= time()-300)
UPRAVIT:
Změňte svůj dotaz tak, abyste získali časové razítko UNIX pro online
$query = 'SELECT userid, handle, UNIX_TIMESTAMP(online) as online FROM ^users ORDER BY userid ASC';
EDIT2: Aby to bylo jasnější:Ve své první verzi jste porovnávali dvě data ve tvaru '2012-11-01 10:10:10'
if ('2012-11-01 10:10:10' < '2012-11-02 10:10:10')
Toto nemůže fungovat v PHP – je to jako dělat:
if ('apples' < 'bananas')
Musíte porovnávat čísla. Proto jsem navrhl používat unixová časová razítka, která lze snadno porovnávat.