Avatar billede Slettet bruger
10. august 2003 - 19:34 Der er 47 kommentarer og
1 løsning

Online Tid?

Hej er der nogle som kender en kode som man kan lave online tid med, alster når den logger ind laver den en

session("logintid") = now()

så når den logger ud skal jeg have den til at opdatere, timer og min i databasen. Altser hvis nu man har været online i 2 timer og 50 min, og den står på 1 time og 15 min, så skal den lægge det sammen til 4 timer og 5 minutter.

Er der nogle som kan lave det eller har en kode liggende?
Avatar billede wilweb Nybegynder
10. august 2003 - 20:03 #1
Det vil sige du regner med at de der besøger dit website altid logger ud?
Avatar billede Slettet bruger
10. august 2003 - 20:10 #2
Hvad skal jeg ellers gøre? Jeg laver en popup  som logger ud når man forlader siden?
Avatar billede Slettet bruger
10. august 2003 - 20:10 #3
Har du en kode til online tid?
Avatar billede Slettet bruger
10. august 2003 - 20:16 #4
Gad du hjælpe?
Avatar billede wilweb Nybegynder
10. august 2003 - 20:25 #5
Desværre, Jeg har ikke så meget tid lige nu, skal aflevere et større projekt på tirsdag.
Avatar billede Slettet bruger
10. august 2003 - 20:26 #6
ok
Avatar billede eagleeye Praktikant
10. august 2003 - 20:43 #7
Problemmet som gizom skriver er at så loget folk rigtig af.

men du kan lave nogle funktioner som kan regne online tiden ud i timer og minutter eks:


function timeCalc(StartTime, FinishTime)
diff = datediff("n",StartTime,FinishTime)
hours = int(diff / 60)
mins = diff - (60*hours)
timeCalc = hours & ":" & mins
end function


function addTime(dbTid,nyTid)
addTime = nyTid
if len(dbTid) > 0 and inStr(1, dbTid, ":") > 0 then
  arrDB = Split(dbTid,":")
  arrTid = Split(nyTid,":")
  mins = int(arrDB(1))+int(arrTid(1))
  hours = int(arrDB(0))+int(arrTid(0))
  if mins >= 60 then
    mins = mins - 60
    hours = hours + 1
  end if
  addTime = hours & ":" & mins
end if
end function


Så kan du når man logger ud lavet noget som:

onlinetid = timeCalc(session("logintid"),now)
SQL = "SELECT * FROM tabel WHERE brugerID = " & Session("brugerID")
Set rs = Conn.Execute(SQL)
nyonlinetid = addTime(rs("onlineTid"), nlinetid)
SQL = "UPDATE tabel SET onlineTid = '" & nyonlinetid & "' WHERE brugerID = " & session("brugerID")
Avatar billede Slettet bruger
10. august 2003 - 20:48 #8
Hvor opdateres minutter og hvor opdateres timer? jeg har lavet det i 2 felter?
Avatar billede Slettet bruger
10. august 2003 - 20:53 #9
Det er bare hvordan skal jeg ellers vise det? Så vil der jo komme til at stå min?
Avatar billede Slettet bruger
10. august 2003 - 20:54 #10
Hmm Nu kan jeg se det, ups sorry, hvis du har tid gider du så lave så man får et point pr time? Sig hvis du vil have flere points?
Avatar billede eagleeye Praktikant
10. august 2003 - 20:59 #11
Er det i to kolonner ok, så må det laves lidt om eksvis såan her hvis de to kolonner er defineret som tal:


function timeCalc(StartTime, FinishTime)
diff = datediff("n",StartTime,FinishTime)
hours = int(diff / 60)
mins = diff - (60*hours)
timeCalc = hours & ":" & mins
end function


onlinetid = timeCalc(session("logintid"),now)
arrOnlineTid = Split(onlinetid,":")

SQL = "UPDATE tabel SET onlineTimer = onlineTimer + " & arrOnlineTid(0) & ", onlineMin = onlineMin + " & arrOnlineTid(1) & " WHERE brugerID = " & session("brugerID")
Avatar billede Slettet bruger
10. august 2003 - 21:06 #12
hvad af det skal være i logaf?
Avatar billede Slettet bruger
10. august 2003 - 21:09 #13
function timeCalc(StartTime, FinishTime)
diff = datediff("n",StartTime,FinishTime)
hours = int(diff / 60)
mins = diff - (60*hours)
timeCalc = hours & ":" & mins
end function

onlinetid = timeCalc(session("logintid"),now)
arrOnlineTid = Split(onlinetid,":")

SQL = "UPDATE brugere SET timer = timer + " & arrOnlineTid(0) & ", min = min + " & arrOnlineTid(1) & " WHERE id = " & session("id")
 
Session.Abandon
response.redirect "login.asp"
Avatar billede eagleeye Praktikant
10. august 2003 - 21:09 #14
Dette skal ind i logaf, det opdater databasen:

onlinetid = timeCalc(session("logintid"),now)
arrOnlineTid = Split(onlinetid,":")

SQL = "UPDATE tabel SET onlineTimer = onlineTimer + " & arrOnlineTid(0) & ", onlineMin = onlineMin + " & arrOnlineTid(1) & " WHERE brugerID = " & session("brugerID")


Så kan du ligge funktionen et andet sted i koden.
Avatar billede eagleeye Praktikant
10. august 2003 - 21:10 #15
ja som du har vist det 10/08-2003 21:09:14 er også fint.

Funktionen er lavet hvis du senere har behov for at regne timer:minutter ud fra to Now() tidpunkter.
Avatar billede Slettet bruger
10. august 2003 - 21:14 #16
virker dette nu også til points?
function addTime(dbTid,nyTid)
addTime = nyTid
if len(dbTid) > 0 and inStr(1, dbTid, ":") > 0 then
  arrDB = Split(dbTid,":")
  arrTid = Split(nyTid,":")
  mins = int(arrDB(1))+int(arrTid(1))
  hours = int(arrDB(0))+int(arrTid(0))
  if mins >= 60 then
    mins = mins - 60
    hours = hours + 1
    points = points + 1
  end if
  addTime = hours & ":" & mins
end if
end function
Avatar billede Slettet bruger
10. august 2003 - 21:15 #17
Hmm den vister "ikke" fejl, men den opdatede heller ikke timer her :

<%
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath("../../db/com.mdb")
Conn.Open DSN

function timeCalc(StartTime, FinishTime)
diff = datediff("n",StartTime,FinishTime)
hours = int(diff / 60)
mins = diff - (60*hours)
timeCalc = hours & ":" & mins
end function

onlinetid = timeCalc(session("logintid"),now)
arrOnlineTid = Split(onlinetid,":")

SQL = "UPDATE brugere SET timer = timer + " & arrOnlineTid(0) & ", min = min + " & arrOnlineTid(1) & " WHERE id = " & session("id")
 
Session.Abandon
response.redirect "login.asp"
%>
Avatar billede eagleeye Praktikant
10. august 2003 - 21:16 #18
Til points?
hvordan skal det regnes?
Avatar billede Slettet bruger
10. august 2003 - 21:17 #19
1 point pr time.
Avatar billede Slettet bruger
10. august 2003 - 21:21 #20
min login fil:
session("logintid") = now()
function timeCalc(StartTime, FinishTime)
diff = datediff("n",StartTime,FinishTime)
hours = int(diff / 60)
mins = diff - (60*hours)
timeCalc = hours & ":" & mins
end function


function addTime(dbTid,nyTid)
addTime = nyTid
if len(dbTid) > 0 and inStr(1, dbTid, ":") > 0 then
  arrDB = Split(dbTid,":")
  arrTid = Split(nyTid,":")
  mins = int(arrDB(1))+int(arrTid(1))
  hours = int(arrDB(0))+int(arrTid(0))
  if mins >= 60 then
    mins = mins - 60
    hours = hours + 1
  end if
  addTime = hours & ":" & mins
end if
end function

Nogle fejl?
Avatar billede eagleeye Praktikant
10. august 2003 - 21:25 #21
du behøver bare at gemme now i session nrå man logger ind:

session("logintid") = now()
Avatar billede Slettet bruger
10. august 2003 - 21:28 #22
okey
Avatar billede Slettet bruger
10. august 2003 - 21:28 #23
det er nok fejlen
Avatar billede eagleeye Praktikant
10. august 2003 - 21:29 #24
kom lige i tanke om noget du er under logaf nød til at hendte fra databasen eller man du få flere minutter end 60, så dette skal med uder log af og hvis point = timer så kan du bare gemme timer i point kolonnen på samme tid:




function timeCalc(StartTime, FinishTime)
diff = datediff("n",StartTime,FinishTime)
hours = int(diff / 60)
mins = diff - (60*hours)
timeCalc = hours & ":" & mins
end function


function addTime(dbTid,nyTid)
addTime = nyTid
if len(dbTid) > 0 and inStr(1, dbTid, ":") > 0 then
  arrDB = Split(dbTid,":")
  arrTid = Split(nyTid,":")
  mins = int(arrDB(1))+int(arrTid(1))
  hours = int(arrDB(0))+int(arrTid(0))
  if mins >= 60 then
    mins = mins - 60
    hours = hours + 1
  end if
  addTime = hours & ":" & mins
end if
end function


onlinetid = timeCalc(session("logintid"),now)
SQL = "SELECT * FROM tabel WHERE brugerID = " & Session("brugerID")
Set rs = Conn.Execute(SQL)
nyonlinetid = addTime(rs("onlineTimer") &":"& rs("onlineMin"), onlinetid)
arr = Split(nyonlinetid,":")

SQL = "UPDATE tabel SET onlineTimer = " & arr(0) & ", onlineMin = " & arr(1) & ", points = " & arr(0) & " WHERE brugerID = " & session("brugerID")
Avatar billede Slettet bruger
10. august 2003 - 21:30 #25
Nej, det rettede det ikke så må fejlen være her:

function addTime(dbTid,nyTid)
addTime = nyTid
if len(dbTid) > 0 and inStr(1, dbTid, ":") > 0 then
  arrDB = Split(dbTid,":")
  arrTid = Split(nyTid,":")
  mins = int(arrDB(1))+int(arrTid(1))
  hours = int(arrDB(0))+int(arrTid(0))
  if mins >= 60 then
    mins = mins - 60
    hours = hours + 1
  end if
  addTime = hours & ":" & mins
end if
end function

function timeCalc(StartTime, FinishTime)
diff = datediff("n",StartTime,FinishTime)
hours = int(diff / 60)
mins = diff - (60*hours)
timeCalc = hours & ":" & mins
end function

onlinetid = timeCalc(session("logintid"),now)
arrOnlineTid = Split(onlinetid,":")

SQL = "UPDATE brugere SET timer = timer + '" & arrOnlineTid(0) & "', min = min + '" & arrOnlineTid(1) & "' WHERE id = " & session("id")
Avatar billede eagleeye Praktikant
10. august 2003 - 21:32 #26
Er timer og min i databasen defineret som tekst eller tal?
Avatar billede eagleeye Praktikant
10. august 2003 - 21:33 #27
hvad er fejlen helt præsis?
Avatar billede Slettet bruger
10. august 2003 - 21:34 #28
det er tal
Avatar billede eagleeye Praktikant
10. august 2003 - 21:35 #29
Så prøv at fjerne ' fra timer  og min


SQL = "UPDATE brugere SET timer = timer + " & arrOnlineTid(0) & ", min = min + " & arrOnlineTid(1) & " WHERE id = " & session("id")
Avatar billede Slettet bruger
10. august 2003 - 21:38 #30
den vil stadig ikke opdatere!
Avatar billede Slettet bruger
10. august 2003 - 21:40 #31
Den viser ikke fejl..
Avatar billede eagleeye Praktikant
10. august 2003 - 21:40 #32
kommer der fejl?

hov min er reservert ord i SQL og det muligt timer er også reserveret ord i Access så prøv med[] omkring.:

SQL = "UPDATE brugere SET [timer] = [timer] + " & arrOnlineTid(0) & ", [min] = [min] + " & arrOnlineTid(1) & " WHERE id = " & session("id")
Avatar billede Slettet bruger
10. august 2003 - 21:45 #33
Nej, der kommer ikke fejl, hmm timer, virker ikke. Kan det være noget med at den addtime er det? hvad bliver den brugt til?
Avatar billede eagleeye Praktikant
10. august 2003 - 21:51 #34
Prøv at rette den tid den sidste jeg har vist 10/08-2003 21:29:14
Avatar billede Slettet bruger
10. august 2003 - 21:53 #35
Hvor kan jeg rette den?
Avatar billede eagleeye Praktikant
10. august 2003 - 21:56 #36
Prøv at bruge alt det kode for logaf.
Den du har hendter ikke timer og minutter fra DBen og dermed kan minutter blive mere end 60. Det sidste kode du har vist kaldes addTiem ikke og den skulle bruges til at ligge timer:minutter fra DBen og det nye antal timer:minutter sammen.
Avatar billede Slettet bruger
10. august 2003 - 22:01 #37
Det virker TAK Mange TAK. Fik det til at virke Smid et svar.

PS: Ved du hvordan man kan sætte den til at give 1 point pr time?
Avatar billede Slettet bruger
10. august 2003 - 22:03 #38
Dog en fejl, ved 60 minutter opdatere den ikke til 1 time?
Avatar billede eagleeye Praktikant
10. august 2003 - 22:05 #39
Hvilken bruger du ?
Avatar billede eagleeye Praktikant
10. august 2003 - 22:11 #40
BRuger du dette hvor den først hendter fra DBen timer:minutter:
Her også et eks med hvordan man får 1 pr point ny time:
Dette til logaf delen:


function timeCalc(StartTime, FinishTime)
diff = datediff("n",StartTime,FinishTime)
hours = int(diff / 60)
mins = diff - (60*hours)
timeCalc = hours & ":" & mins
end function


function addTime(dbTid,nyTid)
addTime = nyTid
if len(dbTid) > 0 and inStr(1, dbTid, ":") > 0 then
  arrDB = Split(dbTid,":")
  arrTid = Split(nyTid,":")
  mins = int(arrDB(1))+int(arrTid(1))
  hours = int(arrDB(0))+int(arrTid(0))
  if mins >= 60 then
    mins = mins - 60
    hours = hours + 1
  end if
  addTime = hours & ":" & mins
end if
end function


onlinetid = timeCalc(session("logintid"),now)
SQL = "SELECT * FROM brugere WHERE id= " & Session("ID")
Set rs = Conn.Execute(SQL)

nyonlinetid = addTime(rs("Timer") &":"& rs("Min"), onlinetid)
arr = Split(nyonlinetid,":")
point = int(arr(0)) - Int(rs("Timer"))
SQL = "UPDATE brugere SET [timer] = [timer] + " & arrOnlineTid(0) & ", [min] = [min] + " & arrOnlineTid(1) & " point = point + " & point & " WHERE id = " & session("id")
Avatar billede Slettet bruger
10. august 2003 - 22:53 #41
Det virker det hele undtagel, minutter den skal nulstille minutter når der kommer en nye time? Kan man ikke lave det?
Avatar billede eagleeye Praktikant
10. august 2003 - 22:55 #42
det skulle den også gøre hvis du bruger det sidste jeg har vist.

I denne if sætning tjekker dem om total minutter er større en 60 og er de det trækkes 60 fra og der liggers en time til timner:

  if mins >= 60 then
    mins = mins - 60
    hours = hours + 1
  end if
Avatar billede Slettet bruger
10. august 2003 - 23:20 #43
Men hvis nu ikke den er over 60?
Avatar billede Slettet bruger
10. august 2003 - 23:22 #44
Lad os sige, min står på 59 så er man på i 1 minut så virker det ikke. Men kan man ikke lave noget [min] = " & arrOnlineTid(1) & " ?
Avatar billede eagleeye Praktikant
10. august 2003 - 23:24 #45
Står der kun 59 eller står der 0:59 ??
Avatar billede eagleeye Praktikant
10. august 2003 - 23:28 #46
glem det spørgsmål jeg kom med ;)


Noget andet ..

Har du husket en Conn.execute efter den UPDATE SQL 'en ??


SQL = "UPDATE brugere SET [timer] = [timer] + " & arrOnlineTid(0) & ", [min] = [min] + " & arrOnlineTid(1) & " point = point + " & point & " WHERE id = " & session("id")

Conn.Execute (SQL )
Avatar billede eagleeye Praktikant
10. august 2003 - 23:32 #47
det er vist også noget med navnet på arrayet så prøv dette:


function timeCalc(StartTime, FinishTime)
diff = datediff("n",StartTime,FinishTime)
hours = int(diff / 60)
mins = diff - (60*hours)
timeCalc = hours & ":" & mins
end function


function addTime(dbTid,nyTid)
addTime = nyTid
if len(dbTid) > 0 and inStr(1, dbTid, ":") > 0 then
  arrDB = Split(dbTid,":")
  arrTid = Split(nyTid,":")
  mins = int("0" & arrDB(1))+int("0" & arrTid(1))
  hours = int("0" & arrDB(0))+int("0" & arrTid(0))
  if mins >= 60 then
    mins = mins - 60
    hours = hours + 1
  end if
  addTime = hours & ":" & mins
end if
end function


onlinetid = timeCalc(session("logintid"),now)
SQL = "SELECT * FROM brugere WHERE id= " & Session("ID")
Set rs = Conn.Execute(SQL)

nyonlinetid = addTime(rs("Timer") &":"& rs("Min"), onlinetid)
arrOnlineTid = Split(nyonlinetid,":")
point = int("0" & arrOnlineTid(0)) - Int(rs("Timer"))
SQL = "UPDATE brugere SET [timer] = [timer] + " & arrOnlineTid(0) & ", [min] = [min] + " & arrOnlineTid(1) & " point = point + " & point & " WHERE id = " & session("id")
Conn.Execute(SQL)
Avatar billede Slettet bruger
11. august 2003 - 15:04 #48
It Works MANGE TAK! Jeg slettede bare + min og + timer! TAK! Hvis du har et script til at åbne en popup når siden lukkes og har tid må du gerne smide det her.
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
Kurser inden for grundlæggende programmering

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