Avatar billede Slettet bruger
06. april 2002 - 04:11 Der er 2 kommentarer og
1 løsning

Hits/unikke hits.

Hej e........

jeg har dette script:
' Her opdateres hits når brugeren bliver sendt til et link
Set myConn = Server.CreateObject("ADODB.Connection")
myConn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("links.mdb")
If Request.QueryString("id") <> "" Then
    Set rs = Server.CreateObject("ADODB.RecordSet")
    strSQL = "SELECT * FROM links WHERE (ID = " & Request.QueryString("id") & ")"
    rs.Open strSQL, myConn, 1, 3
    If Not (rs.BOF Or rs.EOF) Then
        rs("Hits") = rs("Hits") + 1
        strURL = rs("URL")
        rs.Update
        rs.Close
        myConn.Close
        Set rs = Nothing
        Set myConn = Nothing
        Response.Clear
        Response.Redirect(strURL)
    End If
End If
%>

hvordan gør jeg så det kun er unikke adresser der registreres ?

mvh.
questis.dk
Avatar billede yellow Nybegynder
06. april 2002 - 07:06 #1
Først henter du brugerens IP Adresse:
userIP = Request.SeverVariables("REMOTE_ADDR")

Du bliver nødt til at have en ekstra tabel i din database, der holder styr på hvilke ip adresse der har været inde på hvert link.
Denne Tabel - tblLinkReference - skal have 2 fields; "LinkID" og "userIP"

If Request.QueryString("id") <> "" Then
    ID = Request.QueryString("id")
    Set rs = Server.CreateObject("ADODB.RecordSet")   
    strSQL = "SELECT Links.ID FROM links INNER JOIN tblLinkReference ON links.ID = tblLinkReference.LinkID WHERE (links.ID = " & ID & " AND tblLinkReference.userIP = '" & userIP & "')"   
    rs.Open strSQL, myConn, 1, 1
    if rs.EOF then 'first time this user selected this ID
      myConn.Execute( "INSER INTO tblLinkReference (LinkID,userIP) VALUES ( " & ID & ",'" & userIP & "' )" )
    end if
    rs.Close
    strSQL = "SELECT links.URL FROM links LEFT OUTER JOIN tblLinkReference ON links.ID = tblLinkReference.LinkID WHERE (links.ID = " & ID & ")"   
    rs.open strSQL, myConn, 1, 1
    if not rs.EOF then
      hits = rs.recordCount     
      strUrl = rs("URL")
      Response.Clear
      Response.Redirect(strURL)     
    else
      response.write( "Invalid link ID" )
    end if   
    rs.close
    myConn.Close
    Set rs = Nothing
    Set myConn = Nothing
End If



Unikke hits er repræsenteret ved antallet af joinede rækker i tblLinkReference. Altså du behøver ikke feltet "hits" i "links" tabellen. Du kan do øge performance lidt ved at beholde "hits" feltet og holde det opdateret ved at lægge een til hver gang du tilføjer en række i tblLinkReference.


Jeg har ikke testet ovenstående, så der kan være fejl. Men idéen skulle være god nok.
Avatar billede Slettet bruger
07. april 2002 - 17:12 #2
det virker nu ikke helt, hver gang jeg vælger at klikke på et link, får jeg beskeden at siden ikke eksisterer ?  er det noget du kan rette ?
Avatar billede Slettet bruger
11. april 2002 - 09:52 #3
hvis du ikke kan/vil hjælpe mere lukker je nu.

mvh.
questis.dk
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