Panelen



Forumnavigering
Senast inloggade
RSS
Sponsorer

Forum > Övriga serverspråk > PHP

Visa medlemmen som offline efter 'x' minuter

Erik
Erik

Gradering

#19728

Hejsan jag har kört fast i huvudet just nu. Jag tänker göra så att när man är inne på sidan så ska sin status uppdatera varje gång man klickar på något. Alltså att man sparar tiden det hände och sedan jämför med och senaste aktivitet har överstigit 1800 sekunder alltså 30 minuter.

Vet inte hur man ska spara tiden för att sedan göra någon slags if sats.

 

Hur gör jag if satsen och vilket format ska jag spara tiden?

ID: #19728 | Skapades: 2010-04-30 15:09:08 | Tråden har 5 svar och har lästs 303 gånger.

voigtan
voigtan

Gradering

#19729

Du gör ingen if fråga, kör en SQL efter 30 min med CRON jobb, sql för datum: http://dev.mysql.com/doc/refman/5.1...-functions.html

liknande frågor har varit uppe rätt många gånger så det bör bara vara att söka.

Hur man ställer en fråga: http://support.microsoft.com/kb/q555375
ID: #19729 | Skapades: 2010-04-30 16:37:41

backman
backman

Gradering

#19739

det går att göra med if också

skapa en tabell i databasen som heter lastonline int(14)

sätt ut 

$lastonline = time(); och mysql_query("UPDATE users SET lastonline='$lastonline' WHERE id='{$_SESSION['inloggad']}'"); i din kod där du vill att den ska uppdateras.

och här är en funktion jag gjort, dock för 10 min:

function online(){

 $sql = mysql_query("SELECT * FROM users")or die(mysql_error());

 $x=0;

 while($fetch = mysql_fetch_assoc($sql)){

  if($fetch['lastonline']+600 > time()){

$x++;

}

 }

return $x;

}

Redigerades av backman den 2 maj 2010. Läs tidigare inlägg.
ID: #19739 | Skapades: 2010-05-02 21:02:33

voigtan
voigtan

Gradering

#19740

Citerar backman:

det går att göra med if också

här är en funktion jag gjorde förut, dock för 10 min.

 

function online(){

 $sql = mysql_query("SELECT * FROM users")or die(mysql_error());

 $x=0;

 while($fetch = mysql_fetch_assoc($sql)){

  if($fetch['lastonline']+600 > time()){

$x++;

}

 }

return $x;

}

 

Dock så måste en aktiv besökare gå mot din PHP sida med funktionen, och att skriva en SQL fråga med alla medlemmar bli rätt jobbig om du har många poster.

Hur man ställer en fråga: http://support.microsoft.com/kb/q555375
ID: #19740 | Skapades: 2010-05-02 21:05:22

backman
backman

Gradering

#19741

är väl bara att skriva ut echo online(); om man har inkluderat filen, eller jag kanske inte förstog riktigt

ID: #19741 | Skapades: 2010-05-02 21:17:28

voigtan
voigtan

Gradering

#19742

Enklaste är att bara kolla när man är inloggad sist och göra en diff mot datumet just nu: http://www.addedbytes.com/code/php-...tediff-function/

Då när du ändå hämtar ut informationen (bara det är ett datum) så kör du funktionen, att hämta värdet på alla medlemmar som du gör om du bara vill lista de medlemmar som är online(mindre än x minuter sen) så gör det i SQL frågan istället för att hämta ALL information, det är en stor skillnad att få ut 20 poster än om man har 200 000 medlemmar, 200 000 loopar vs 20 säger en hel del.

Hur man ställer en fråga: http://support.microsoft.com/kb/q555375
ID: #19742 | Skapades: 2010-05-03 08:25:49
© Copyright 2007-2009 Shadi Domat | Version 3.0 | Sidkarta | Policy