Avatar billede nidyahou Praktikant
10. oktober 2003 - 23:47 Der er 25 kommentarer og
1 løsning

funktionen skrivtid virker ikke

hej, det er meningen at når man forlader siden skal der beregnes hvor lang tid der er brugt på siden, her skal det så bare vises

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

strSQL = "Select * From Brugere Where bruger = '" & session("bruger") & "'"
Set rs = Conn.Execute(strSQL)
tidon = rs("Onlinetid")
tidtal = cint(tidon) / cint(60)
tidtal = split(tidon, ",")
if tidtal(1) = 0 then
tidtal(1) = tidtal(1) & "0"
end if
Response.Write "du er logget ind som: " & session("bruger")
Response.Write "<br>du er i level <b>" & rs("level") & "</b><br>"
Response.Write "du har været online i: " & tidtal(0) & " timer og " & tidtal(1) & " minutter"

end if


jeg får denne fejl:

Microsoft VBScript runtime (0x800A0009)
Subscript out of range: '[number: 1]'

i linjen>
timer og " & tidtal(1) & " minutter"
Avatar billede nidyahou Praktikant
10. oktober 2003 - 23:51 #1
undskyld i linjen
if tidtal(1) = 0 then
Avatar billede keysersoze Ekspert
11. oktober 2003 - 00:03 #2
formentligt fordi dit split ikke giver nogle resultater - og så vil du ikke kunne efterspørge tidtal(1)
Avatar billede nidyahou Praktikant
11. oktober 2003 - 00:09 #3
jamen, hvordan gir jeg det så en værdi?
Avatar billede keysersoze Ekspert
11. oktober 2003 - 00:13 #4
hvis tidtal er tom eller ikke indeholder et "," vil du altid få fejlen - så du kunne fx tjecke for om tegnet "," i det hele taget var en del af tidtal før du splittede
Avatar billede nidyahou Praktikant
11. oktober 2003 - 00:16 #5
jep men hvad siger jeg så?
if NOT tidtal LIKE "%,%" duer ikke
Avatar billede keysersoze Ekspert
11. oktober 2003 - 00:18 #6
If instr(tidtal,",") <> 0
Avatar billede nidyahou Praktikant
11. oktober 2003 - 00:20 #7
... jeg forstår ikke kan du ikke forklare mig mere ?
Avatar billede keysersoze Ekspert
11. oktober 2003 - 00:22 #8
If instr(tidtal,",") <> 0 Then
  'lav dit split
  'lav dine to variabler
End If
Avatar billede nidyahou Praktikant
11. oktober 2003 - 00:27 #9
hvad så hvis der er , ?
Avatar billede nidyahou Praktikant
11. oktober 2003 - 00:31 #10
hold kæft et rodet script findes der ikke en lettere måde at regne tal ud på den det der?
Avatar billede keysersoze Ekspert
11. oktober 2003 - 00:39 #11
hvis der er , med i så den den dit split samt du får "adgang" til at lave tidtal(0) og tidtal(1) om til variabler du så senere kan bruge...

om der findes lettere måde? jo - jeg ville nok gemme tiden i en session og derefter benytte funktionen DateDiff til at finde forskellen mellem logintidspunktet og nu
Avatar billede nidyahou Praktikant
11. oktober 2003 - 00:41 #12
det er prævist hvad der foregår i logud filen, men ligenu skal brugeren se onlinetiden i info
Avatar billede keysersoze Ekspert
11. oktober 2003 - 00:55 #13
jeg kan hverken se en session med tiden eller en datediff-funktion?

men det er også lige meget - hvis du benytter min if-sætning så vil du kunne undgå den fejl du kommer ud i fordi der ikke er , i din variabel tidtal
Avatar billede nidyahou Praktikant
11. oktober 2003 - 01:02 #14
du får lige hele koden som den ser ud nu:

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

strSQL = "Select * From Brugere Where bruger = '" & session("bruger") & "'"
Set rs = Conn.Execute(strSQL)
tidon = rs("Onlinetid")
tidon = cint(tidon) / cint(60)
tidtal = split(tidon, ",")
tid0 = tidtal(0)
tid1 = tidtal(1)
tid1 = left(tid1,2)

Response.Write "du er logget ind som: " & session("bruger")
Response.Write "<br>du er i level <b>" & rs("level") & "</b><br>"
Response.Write "du har været online i: " & tid0 & " timer og " & tid1 & " minutter"
Avatar billede nidyahou Praktikant
11. oktober 2003 - 01:03 #15
og logud koden:

tid = (DateDiff("n",session("sidstlog"),Now))
tidtal = cint((DateDiff("n",session("sidstlog"),Now))) / cint(60)
tidtal = split(tidtal, ",")
tid1 = Left(tidtal(1),2)
Response.Write "Du er nu logget af " & session("bruger") & ", du var på i: " & tidtal(0) & " timer og " & tid1 & " minutter"

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

strSQL = "Select * From Brugere Where Bruger = '" & session("bruger") & "'"
set rs = Conn.Execute (strSQL)

strOn = rs("Onlinetid")

strSQL = "Update Brugere set "
strSQL = strSQL & "Onlinetid= '" & cint(strOn) + cint(tid) & "' "
strSQL = strSQL & " Where Bruger = '" & session("bruger") & "'"
Conn.Execute strSQL

Session.Abandon

jeg er virkelig på herrens mark og sætter gerne nogen flere point af hvis det hjælper tankevirksomheden hos nogen =)
Avatar billede keysersoze Ekspert
11. oktober 2003 - 01:10 #16
Hvad sker der hvis du bruger nedenstående...

strSQL = "Select * From Brugere Where bruger = '" & session("bruger") & "'"
Set rs = Conn.Execute(strSQL)
tidon = rs("Onlinetid")
tidon = cint(tidon) / cint(60)
If instr(tidon,",") <> 0 Then
  tidtal = split(tidon, ",")
  tid0 = tidtal(0)
  tid1 = tidtal(1)
  tid1 = left(tid1,2)
End If
Avatar billede nidyahou Praktikant
11. oktober 2003 - 01:14 #17
jeg ved virkelig ikk hvad jeg har lavet, tror jeg må begybnde helt forfra INTET af det der sker giver for mig nogen som helst mening...!
Avatar billede keysersoze Ekspert
11. oktober 2003 - 01:39 #18
jeg kan desværre ikke hjælpe mere når jeg ikke ved hvordan mit forslag virker eller ikke virker...
Avatar billede nidyahou Praktikant
11. oktober 2003 - 16:22 #19
jeg ved ikke hvad jeg skal sige :P jeg har bare enormt meget brug for en der kan hjælpe mig med en funktion der logger onlinetid på en side
Avatar billede keysersoze Ekspert
11. oktober 2003 - 16:32 #20
har du i det hele taget prøvet mit forslag?
Avatar billede nidyahou Praktikant
12. oktober 2003 - 10:00 #21
ja
Avatar billede keysersoze Ekspert
12. oktober 2003 - 10:06 #22
godt - og hvad sker der eller sker der ikke når du forsøger?
Avatar billede nidyahou Praktikant
12. oktober 2003 - 18:38 #23
præcis hvad der skete ved det andet
Avatar billede keysersoze Ekspert
12. oktober 2003 - 18:44 #24
Du skal selvfølgelig også indsætte de to variabler jeg danner i min if-sætning - så linien skal i stedet se sådan ud;

Response.Write "du har været online i: " & tidtal0 & " timer og " & tidtal1 & " minutter"

problemet er bare, at hvis if-sætningen ikke bliver kørt dannes de to varibler og så står der bare;

du har været online i: timer og minutter

men så må du lave et tjeck et andet sted for om de nye variabler eksisterer eller ej... men prøv det først og se hvad der så sker
Avatar billede nidyahou Praktikant
13. oktober 2003 - 09:27 #25
keyser jeg fik lavet noget og jeg henviser derfor til et problem i forbindelse med det til adressen:
http://www.eksperten.dk/spm/413058
tusind tak
Avatar billede nidyahou Praktikant
14. oktober 2003 - 13:06 #26
lukker
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