Avatar billede uzziuz Nybegynder
20. august 2006 - 08:50 Der er 45 kommentarer

Timer og Minutter

Hej jeg kunne godt tænke mig et system der gemmer alle de timer en bruger har været online i en mysql Database!

En der vil hjælpe har selv prøvet men kan ikke finde ud af det!
Avatar billede chrisson Nybegynder
20. august 2006 - 08:56 #1
Altså selve brugeren? eller ip?
Avatar billede uzziuz Nybegynder
20. august 2006 - 09:07 #2
Brugeren
Avatar billede jakobdo Ekspert
20. august 2006 - 10:31 #3
Hvordan ved du en bruger er online?
Hjemmesider bliver sendt til browseren, og så ved du faktisk ikke om brugeren lukker siden lige efter, eller om han sidder og læser siden fra top til bund.
Du kan måske lave noget med noget javascript som refresher hvert minut i baggrund, måske via XMLHttpRequest.
Avatar billede uzziuz Nybegynder
20. august 2006 - 10:39 #4
Hallo der er noget der heder session!
Avatar billede leif Seniormester
20. august 2006 - 10:42 #5
Hallo, ja men du ved ikke om Brugeren lukker browseren lige efter at have startet Session
Avatar billede uzziuz Nybegynder
20. august 2006 - 10:59 #6
Men hvordan kan andre hjemmesider så se hvem der er online?
Avatar billede leif Seniormester
20. august 2006 - 11:07 #7
Det vil næsten altid være et estimat, men det man gør er at man logger hele tiden hvornår bruger sidst var aktiv, og er det så over fx. 15 min. siden så bliver den ikke længere betragtet som aktiv.
Avatar billede uzziuz Nybegynder
20. august 2006 - 11:13 #8
Okay men kan man så ikke bruge det...?
Avatar billede hmm10 Nybegynder
20. august 2006 - 11:28 #9
Ajax kunne også være en løsning. Teori: et simpelt javascript henter din php side frem efter et sat interval. Denne php-fil gemmer så blot om brugeren stadig er aktiv (true/false). Din "statestik" tæller så blot de aktive indenfor fx. 10 min. Hvis en bruger så sidder og klikker rundt, er man aktiv - går brugeren derimod i fx. 10 min med computeren tændt (og browseren åben på din side) vises den som ikke aktiv - kommer brugeren så tilbage efter en indkøbstur, og klikker rundt efterfølgende vises han igen som aktiv.
Avatar billede uzziuz Nybegynder
20. august 2006 - 11:31 #10
Noget kode...?
Avatar billede hmm10 Nybegynder
20. august 2006 - 11:36 #11
Nu ved jeg ikke om du er begynder eller øvet i php og javascript (evt. SQL), men et færdigt script lærer du ikke noget af. Jeg synes, at du selv skal læse om ajax først: http://www.w3schools.com/ajax/default.asp
Avatar billede uzziuz Nybegynder
20. august 2006 - 11:41 #12
Jeg er 12 og ikke særligt god til engelsk!

Jeg kan okay php men ikke ajax og Js Hjælp Please!
Avatar billede hmm10 Nybegynder
20. august 2006 - 11:45 #13
Det må du undskylde uzziuz - vi er alle på forskellige niveauer. Jeg vil gerne lave et eksempel. Kender du godt til SQL?
Avatar billede uzziuz Nybegynder
20. august 2006 - 11:46 #14
Lidt!
Avatar billede chrisson Nybegynder
20. august 2006 - 15:54 #15
Finder lige min frem, måske kan du bruge den, det er i php og mysql
Avatar billede uzziuz Nybegynder
20. august 2006 - 15:57 #16
Okay tak!
Avatar billede chrisson Nybegynder
20. august 2006 - 22:13 #17
Du får den imorgen ok? har nemlig haft travlt idag!
Avatar billede uzziuz Nybegynder
21. august 2006 - 06:45 #18
Okay!
Avatar billede chrisson Nybegynder
21. august 2006 - 14:42 #19
Du skal have et felt i din tabel med brugere i der hedder: online_time med int(11) og en der hedder last_page_view med int(11)
Avatar billede chrisson Nybegynder
21. august 2006 - 14:45 #20
Og i login skal du så have en update som sætter last_page_view til nu, kan se sådan ud:
$nu = time();
mysql_query("UPDATE brugere SET last_page_view = '$nu' WHERE brugernavn = '$_SESSION[brugernavn]'");
Avatar billede chrisson Nybegynder
21. august 2006 - 14:47 #21
Og i logud skal du have en der opdatere dine timer, kunne se sådan ud:

$query = mysql_query("SELECT * FROM brugere WHERE brugernavn='$_SESSION[brugernavn]'") or print mysql_error();
while($r = mysql_fetch_array($query)) {
Avatar billede chrisson Nybegynder
21. august 2006 - 14:47 #22
Ups, kom til at klikke før tid, skriver lige logud færdig
Avatar billede chrisson Nybegynder
21. august 2006 - 14:49 #23
Og i logud skal du have en der opdatere dine timer, kunne se sådan ud:

$query = mysql_query("SELECT * FROM brugere WHERE brugernavn='$_SESSION[brugernavn]'") or print mysql_error();
while($r = mysql_fetch_array($query)) {

  $nu = time();

$online_add = ($r['last_page_view'] > 0) ? $nu - $r['last_page_view'] : 0;

  $online_total = $r['online_time'] + $online_add;

  $sql = "UPDATE brugere SET last_page_view = $nu, online_time = $online_total WHERE brugernavn = $_SESSION[brugernavn]";
  mysql_query($sql);
Avatar billede uzziuz Nybegynder
21. august 2006 - 16:52 #24
Vil du lægge det i en zip fil beom...
Avatar billede jakobdo Ekspert
21. august 2006 - 17:36 #25
$nu = time();
mysql_query("UPDATE brugere SET last_page_view = '$nu' WHERE brugernavn = '$_SESSION[brugernavn]'");
kan laves sådan her:
mysql_query("UPDATE brugere SET last_page_view = UNIXTIMESTAMP() WHERE brugernavn = '$_SESSION[brugernavn]'");

Din login og logud er smart.
Men hvad hvis der ikke bliver klikket logud?
Avatar billede boost Nybegynder
21. august 2006 - 18:45 #26
jakobdo:

Så kunne man måske slette ham efter 5min:
mysql_query("DELETE FROM brugere WHERE date_add(last_page_view,interval 5 MINUTE) < NOW()");

Hvorfor ikke bruge NOW() istedet for UNIXTIMESTAMP()?
Avatar billede boost Nybegynder
21. august 2006 - 18:51 #27
Min fejl, vi skal opdatere ikke slette :)

mysql_query("UPDATE brugere SET last_page_view = NOW() WHERE date_add(last_page_view,interval 5 MINUTE) < NOW() AND brugernavn = '$_SESSION[brugernavn]'");
Avatar billede chrisson Nybegynder
21. august 2006 - 18:52 #28
Man indsætter denne på siden:

onunload='window.open("logud.php","","width=1,height=1");'
Avatar billede chrisson Nybegynder
21. august 2006 - 18:53 #29
uzziuz, det er jo meningen at du skal sætte de der ting ind i din login og logud!
Avatar billede boost Nybegynder
21. august 2006 - 18:55 #30
Glem hvad jeg har skrevet :P
Det kommer ikke til at virke samme med det chrisson har lavet..
Avatar billede uzziuz Nybegynder
21. august 2006 - 19:49 #31
Men vil du ikke godt lægge det i en zip fil...?
Avatar billede chrisson Nybegynder
21. august 2006 - 22:05 #32
Kan jeg sårn set ik, da jeg ikke ved hvad der står i din logind og logud
Avatar billede uzziuz Nybegynder
22. august 2006 - 06:56 #33
Okay sender det senere idag!
Avatar billede uzziuz Nybegynder
22. august 2006 - 07:08 #34
Her kan du se filerne: www.csmaker.com/chat/t&m.zip
Avatar billede chrisson Nybegynder
22. august 2006 - 15:59 #35
Avatar billede uzziuz Nybegynder
22. august 2006 - 16:57 #36
Virker ikke :(
Avatar billede uzziuz Nybegynder
22. august 2006 - 16:58 #37
Eller skal man være en hel time online af gangen...?
Avatar billede chrisson Nybegynder
22. august 2006 - 18:06 #38
Kig om den skriver noget i tabellen online_time
Avatar billede jakobdo Ekspert
22. august 2006 - 18:41 #39
Du kan ikke bruge den løsning der...
Avatar billede uzziuz Nybegynder
22. august 2006 - 19:18 #40
Det gør den ikke!
Avatar billede chrisson Nybegynder
22. august 2006 - 21:20 #41
Tror ikke den vil kunne køre sammen med dit system, ligesom jakobdo sagde
Avatar billede uzziuz Nybegynder
23. august 2006 - 06:57 #42
lol?

Hvad kan så køre på mit system...?
Avatar billede jakobdo Ekspert
23. august 2006 - 07:45 #43
Det er ikke noget med om det kører på systemet, men ideen dur ikke.
Det eneste som virker, er at bruge
LOGIN, og så antage brugeren er online f.eks. 5-10 minutter frem.
Hver gang brugeren så browser en side, så opdatere du online_time i databasen.

Eller også skal du lave det via en ajax komponent.
Avatar billede chrisson Nybegynder
23. august 2006 - 13:06 #44
Men det er lidt mærkeligt at den ikke virker, da den virker på min
Avatar billede uzziuz Nybegynder
23. august 2006 - 15:13 #45
Vil du hjælpe...?
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