Ik vind het een apart script. Je zet toch geen aparte status in een tabel terwijl je al de laatste activiteit bijhoudt ('lastactive'), dat is mijn inziens krom. Het enige wat je wat mij betreft moet doen is de timestamp controleren in de database. Je bent wat mij betreft vaag bezig met je query. Weet je wel wat DATE_SUB(NOW(),INTERVAL 10 MINUTE) <= lastactive uithaalt? Ik namelijk niet zonder in de manual te kijken.
Oplossing is simpel wat mij betreft (gebruik het zelf ook): Gewoon de timestamp opvragen en op basis daarvan zeggen dat de user on- of offline is door middel van een php if/else constructie.
Waarschijnlijk wil je de userStatus vaker dan 1 keer weergeven, daarom heb ik speciaal voor jou nog een functie geschreven. Dat bespaart je namelijk veel overbodig script werk. Daarnaast houdt het je code lekker overzichtelijk. Als je dan een keer later problemen hebt, of je wilt iets aanpassen, dan hoef je niet alles controller voor controller door te lezen en aan te passen, maar hoef je alleen de functie aan te passen. Erg handig dus!
<?
/**
* LET OP! Laad deze functie eerst in voordat je deze gebruikt!
* @value: input (1 = online, 0 = offline)
* @online: output online: bijvoorbeeld een plaatje of tekst
* @offline: output online: bijvoorbeeld een plaatje of tekst
*/
function userStatus($value, $online, $offline)
{
if($value==1)
{
$value = $online;
}
else
{
$value = $offline;
}
return $value;
}
?>
<?
/**
* LET OP! Laad deze functie eerst in voordat je deze gebruikt!
* @value: input (1 = online, 0 = offline)
* @online: output online: bijvoorbeeld een plaatje of tekst
* @offline: output online: bijvoorbeeld een plaatje of tekst
*/
function userStatus($value,$online,$offline)
{
if($value==1)
{
$value=$online;
}
else
{
$value=$offline;
}
return$value;
}
?>
Hieronder zie je een voorbeeld hoe je deze functie zou kunnen gebruiken.
<?
/**
* Dit is een voorbeeld
* Op de plaats van '1' zou jij $status moeten zetten
* Dus zo: echo userStatus($status, 'Online', 'Offline');
*/
echo userStatus('1', 'Online', 'Offline');
?>
<?
/**
* Dit is een voorbeeld
* Op de plaats van '1' zou jij $status moeten zetten
* Dus zo: echo userStatus($status, 'Online', 'Offline');
P.s. Ik ben ervan uitgegaan dat jouw MySQL query klopt, als je dit zelf niet zeker weet zou ik de reactie van Tuinstoel zeker ook nog eens lezen! Ik weet namelijk ook niet wat deze MySQL functies doen.
Oke, Ja ik ben echt een php noob maar de 1e moet ik gewoon als vervanger gebruiken en de 3e op de pagina van het bericht dat gepost word. lijkt me? .. maar de 2e waar gebruik ik die voor?
$sql = "SELECT naam,status FROM gebruikers WHERE DATE_SUB(NOW(),INTERVAL 10 MINUTE) <= lastactive WHERE id ='".mysql_real_escape_string($_GET['userid'])."'";
$sql="SELECT naam,status FROM gebruikers WHERE DATE_SUB(NOW(),INTERVAL 10 MINUTE) <= lastactive WHERE id ='".mysql_real_escape_string($_GET['userid'])."'";
Ja ik wil het bij een gepost bericht zetten als status (zoals het forum hier ). ik ga deze even proberen
Edit: Ik kom er nu ook achter dat phpmyadmin echt heel lang doet over het refreshen, teminste als ik hem refresh blijft deze nog op "status 1" staan. Terwijl ik een goeie uitlogpagina heb.