15. maj 2003 - 09:08Der er
9 kommentarer og 1 løsning
Counter, der ikke opdatere ordentligt..
Hej. Jeg har en counter, som ikke opdaterer rigtigt.. Hvis jeg trykker F5 på siden opdaterer den ikke en til besøgende (Godt nok).. Men hvis jeg lukker vinduet og går ind på den igen, så giver den entil besøgende selvom man har været inde på det..
DBPath = "DBQ=" & server.mappath("hits.mdb") DBPath = "DRIVER={Microsoft Access Driver (*.mdb)}; " & DBPath set MyConn = server.createobject("ADODB.connection") MyConn.Open DBPath Dim total,dag,dagt,dags,dage SQL = "Select * from Total" SQL1 = "Select Hits from DateHits where Dato = Date()" SQL2 = "Select sum(Hits) as summen from DateHits where Dato > DateAdd('d',-2,Date())" SQL7 = "Select sum(Hits) as summen from DateHits where Dato > DateAdd('d',-8,Date())" SQL31 = "Select sum(Hits) as summen from DateHits where Dato > DateAdd('d',-32,Date())" Set rs = MyConn.execute(SQL) if NOT rs.EOF OR NOT rs.BOF then total = rs("Total") else total = 0 end if rs.close set rs = Nothing Set rs = MyConn.execute(SQL1) if NOT rs.EOF OR NOT rs.BOF then dag = rs("Hits") else dag = 0 end if rs.close set rs = Nothing Set rs = MyConn.execute(SQL2) if NOT rs.EOF OR NOT rs.BOF then dagt = rs("summen") else dagt = 0 end if rs.close set rs = Nothing Set rs = MyConn.execute(SQL7) if NOT rs.EOF OR NOT rs.BOF then dags = rs("summen") else dags = 0 end if rs.close set rs = Nothing Set rs = MyConn.execute(SQL31) if NOT rs.EOF OR NOT rs.BOF then dage = rs("summen") else dage = 0 end if
Nå ja min global.asa ser sådan her ud: <SCRIPT LANGUAGE=VBSCRIPT RUNAT=SERVER> Sub Session_OnStart Session.Timeout = 1440 Application.Lock DBPath = "DBQ=" & server.mappath("hits.mdb") DBPath = "DRIVER={Microsoft Access Driver (*.mdb)}; " & DBPath set MyConn = server.createobject("ADODB.connection") MyConn.Open DBPath
SQL = "SELECT * FROM TOTAL" Set rs = MyConn.execute(SQL) Application("Total") = rs("Total") rs.close Set rs = Nothing SQL = "UPDATE Total SET Total = " & (Application("Total")+1) MyConn.execute(SQL)
SQL = "SELECT * from DateHits WHERE Dato = Date()" ' Rettet Set rs = MyConn.execute(SQL) if NOT rs.EOF OR NOT rs.BOF then Application("Hits") = rs("Hits") else Application("Hits") = 0 SQL = "INSERT INTO DateHits (Dato,Hits) VALUES (Date(), 0)" MyConn.execute(SQL) end if rs.close Set rs = Nothing
SQL = "UPDATE DateHits SET Hits = Hits+1 WHERE Dato = Date()" MyConn.execute(SQL) Dim overmaaned overmaaned = DateAdd("d", -32, date()) SQL = "DELETE FROM DateHits Where Dato < DateAdd('d',-32,Date())" MyConn.execute(SQL) MyConn.Close Set MyConn = Nothing Application.Unlock End Sub Sub Session_OnEnd End Sub </SCRIPT>
Du kan lade siden gøre det i stedet - og så styre, om man har opdateret i dag vha. en cookie. Bagdel - de der ikke godtager cookies, vil opdatere hver gang - også ved F5.
Alt din update hits mm. som du i dag har i global asa lægger du på din default-side (alternativ i en include-fil (en fil, der includeres på alle de andre asp-sider) hvis man skal tælle besøgende op også, hvis man kommer en anden vej ind på sitet). Hertil skal du så lige lave en if, der lige spørger på en cookie, og hvis denne er ok - altså at man _ikke_ har været der i dag, så gør du alt dit counter-halløj, og sætter til sidst cookien. Hvis man har været der (får du igen fra cookien), så falder den bare igennem din if - og gør igenting.
Hmm, ikke nogen løsning. Du fik ellers en, der virker - skulle bare implementeres. :-(
Synes godt om
Ny brugerNybegynder
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.