Avatar billede kicker Nybegynder
04. februar 2007 - 10:49 Der er 6 kommentarer og
1 løsning

Vis status - Online & Ofline

Halløjsovs!

Jeg er i gang med at lave et 'ven' system. Hvor man kan tilføje venner, og se deres status (online øverst og ofline nederst).

Mit problem er at jeg ikke kan få den til at vise om man er ofline eller online, kun hvis man klikker på logud knappen...

Altså, når man logger ind, sætter den ens status i mysql til online. Og så bliver man vist øverst på ventelisterne.

Og når man klikker på logud knappen, sætter den også ens status til ofline.

Men da mange vælger bare at klikke på "Luk ned" knappen oppe i browseren, updatere den ikke ens status til ofline, og så står ens status til online. Selvom man er ofline, det er jo ikke smart...

Så, kan jeg på en eller anden måde gøre så når man er logget ud ved at klikke på luk knappen i browseren...

Jeg har prøvet med windows.Close(); i javascript, men der skal man have popup blockeren slået fra før den virker helt.

Og nu ved jeg så ikke helt hvordan jeg skal gøre...

Jeg vil helst have en løsning i php :D

//KICKER!
Avatar billede michaeltryl Seniormester
04. februar 2007 - 11:14 #1
lave to nye felter i din bruger database

1 onlintid af typen datetime.
2 online af ttpen varchar(3)
Når en bruger logger ind opdatere du feltet online med ja og
hvergang en bruger, som er logget ind, opdatere/går ind på en ny side updatere du det felt online tid med NOW()

Hver gang en ny bruger logger ind kan du opdatere feltet online med nej hvor feltet online tid er ældre end f.eks. 5 minutter. Du kan også vælge at køre dette tjek hve gang en bruger åbner/opdatere en side
Avatar billede kicker Nybegynder
04. februar 2007 - 11:27 #2
Men hvordan laver jeg så listen hvor brugerene bliver vist, hvor der KUN er dem der er online der står øverst, og kun dem der er offline der er nederst.

Hvis jeg gør det med onlinetid:
$hent_beskeder = mysql_query("SELECT * FROM venner ORDER BY onlinetid DESC LIMIT 15") or die(mysql_error());

Så er det den der sidst opdaterede siden der står øverst, jeg vil gerne have at den sorterer med id og ikke med online tid, hvis man kan det?
Avatar billede michaeltryl Seniormester
04. februar 2007 - 12:01 #3
du kan lave to forspørgsler først en fom henter og viser alle som er online sorteret efter id og derefter en som henter og viser alle som ikke er online
Avatar billede michaeltryl Seniormester
04. februar 2007 - 12:03 #4
$query = mysql_query ("SELECT * FROM venner WHERE online ='ja' ORDER BY id DESC LIMIT 15") or die(mysql_error());
while ($vis = mysql_fetch_array($query))
{
alle som er online
}
$nquery = mysql_query ("SELECT * FROM venner WHERE online ='nej' ORDER BY id DESC LIMIT 15") or die(mysql_error());
while ($nvis = mysql_fetch_array($nquery))
{
alle som ikke er online
}
Avatar billede kicker Nybegynder
04. februar 2007 - 12:07 #5
Men så alle dem der lukket deres browser ned. Vil komme til at være som online...
Kan man ikke gøre det så den tager efter onlinetid og ikke online?
Avatar billede michaeltryl Seniormester
04. februar 2007 - 12:17 #6
prøv denne

$query = mysql_query ("SELECT * FROM venner WHERE DATE_ADD(onlinetid, INTERVAL 5 MINUTE) < NOW() ORDER BY id DESC LIMIT 15") or die(mysql_error());
while ($vis = mysql_fetch_array($query))
{
alle som har været aktive indenfor de sidste 5 minutter
}


ellers kan du opdatere feltet online, med 'nej', hvor brugere ikke har været aktive, i f.eks. 5 minutter, i følge onlintid, hver gang en bruger opdatere/åbner siden hvor du vil lave din liste.
Avatar billede kicker Nybegynder
13. april 2007 - 21:29 #7
Lukker, koderne kunne ikke bruges, eller virkede ikke.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester