Avatar billede kalt Nybegynder
13. august 2001 - 22:52 Der er 29 kommentarer og
1 løsning

HIT-TÆLLER !??

Kan nogen fortælle mig hvorfor det her ikke virker..?
<%
strConnect = \"Data Source=d:\\home\\domæne\\db\\database.mdb;Provider=Microsoft.Jet.OLEDB.4.0;\"
Set Conn = Server.CreateObject(\"ADODB.Connection\")
DSN = \"DRIVER={Microsoft Access Driver (*.mdb)}; \"

Conn.Open strConnect


If Request.QueryString(\"id\") <> \"\" Then
    Set rs = Server.CreateObject(\"ADODB.RecordSet\")
    strSQL = \"SELECT * FROM links WHERE (LinkID = \" & Request.QueryString(\"linkid\") & \")\"
    rs.Open strSQL, Conn, 1, 3
    If Not (rs.BOF Or rs.EOF) Then
        rs(\"Hits\") = rs(\"Hits\") + 1
        strURL = rs(\"LinkURL\")
        rs.Update
        rs.Close
        Conn.Close
        Set rs = Nothing
        Set Conn = Nothing
        Response.Clear
        Response.Redirect(strURL)
    End If
End If
%>
Avatar billede keysersoze Guru
13. august 2001 - 22:58 #1
hvad sker der af fejl?
Avatar billede carpediem Nybegynder
13. august 2001 - 23:00 #2
Ja det kan jeg godt. Normalt vil et recordset jo starte med begyndelsen, altså er rs.BOF = True og din opdatering kommer aldrig igang. Desuden synes jeg du skal komme dine nulstillinger uden for If sætningen. Mit forslag er som følger:

<%
strConnect = \"Data Source=d:\\home\\domæne\\db\\database.mdb;Provider=Microsoft.Jet.OLEDB.4.0;\"
Set Conn = Server.CreateObject(\"ADODB.Connection\")
DSN = \"DRIVER={Microsoft Access Driver (*.mdb)}; \"

Conn.Open strConnect


If Request.QueryString(\"id\") <> \"\" Then
    Set rs = Server.CreateObject(\"ADODB.RecordSet\")
    strSQL = \"SELECT * FROM links WHERE (LinkID = \" & Request.QueryString(\"linkid\") & \")\"
    rs.Open strSQL, Conn, 1, 3
    If rs.RecordCount > 0 Then
        rs(\"Hits\") = rs(\"Hits\") + 1
        strURL = rs(\"LinkURL\")
        rs.Update
        Response.Clear
        Response.Redirect(strURL)
    End If
    rs.Close
    Conn.Close
    Set rs = Nothing
    Set Conn = Nothing
End If
%>
Avatar billede keysersoze Guru
13. august 2001 - 23:02 #3
umiddelbart ville jeg nok have lavet noget hen a la dette (uden at kende til din fejl):

<%
Response.Buffer = True

Set myConn = Server.CreateObject(\"ADODB.Connection\")
\"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\" & Server.MapPath(\"placering_af_db.mdb\")
If Request.QueryString(\"id\") <> \"\" Then
    Set rs = Server.CreateObject(\"ADODB.RecordSet\")
    strSQL = \"SELECT * FROM links WHERE (LinkID = \" & Request.QueryString(\"linkid\") & \")\"
    rs.Open strSQL, Conn, 1, 3
    If Not (rs.BOF Or rs.EOF) Then
        rs(\"Hits\") = rs(\"Hits\") + 1
        strURL = rs(\"LinkURL\")
        rs.Update
        rs.Close
        Conn.Close
        Set rs = Nothing
        Set Conn = Nothing
        Response.Clear
        Response.Redirect(strURL)
    End If
End If
%>

Avatar billede carpediem Nybegynder
13. august 2001 - 23:14 #4
Kom lige tl at se lidt nærmere på det. Jeg ville nok nærmere gøre således:

<%
Set objConn = Server.CreateObject(\"ADODB.Connection\")
strConnPath = \"DBQ=\" & Server.MapPath (\"virtuel/sti/til/databasen.mdb\")
objConn.Open \"Driver={Microsoft Access Driver (*.mdb)};\" & strConnPath

Conn.Open strConnect


If Request.QueryString(\"id\") <> \"\" Then
    Set rs = Server.CreateObject(\"ADODB.RecordSet\")
    strSQL = \"SELECT * FROM links WHERE (LinkID = \" & Request.QueryString(\"linkid\") & \")\"
    rs.Open strSQL, Conn, 1, 3
    If rs.RecordCount > 0 Then
        rs(\"Hits\") = rs(\"Hits\") + 1
        strURL = rs(\"LinkURL\")
        rs.Update
        Response.Clear
        Response.Redirect(strURL)
    End If
    rs.Close
End If
Conn.Close
Set rs = Nothing
Set Conn = Nothing
%>
Avatar billede carpediem Nybegynder
13. august 2001 - 23:15 #5
Hovsa endnu en fejl:

Conn.Open strConnect skulle selvfølgelig ikke have været med.
Avatar billede kalt Nybegynder
13. august 2001 - 23:17 #6
OK, jeg prøver lige
Avatar billede kalt Nybegynder
13. august 2001 - 23:31 #7
Det vil ikke, jeg skal nok lige sige med det samme at jeg er ny i det her.
Avatar billede kalt Nybegynder
13. august 2001 - 23:34 #8
Den åbner redirect-siden, men den er helt blank ??
Avatar billede tofte Juniormester
13. august 2001 - 23:34 #9
er den ikke lige grov nok. Du opretter først et spørgsmål. Jeg kommer med et svar, som du afviser(i orden). så opretter du endnu et spørgsmål med ti gange så mange point, hvor du beder folk fejlrette et script som er 100% identisk med mit svar. Så er mit svar lige pludselig ok, man kan i hvert fald godt bruge det i sit vidre arbejde.
http://www.eksperten.dk/spm/98165.
Nu var det ikke nogle guldkorn jeg havde skrevet, men det er bare princippet bag det.
Avatar billede tofte Juniormester
13. august 2001 - 23:35 #10
jeg ville heller ikke selv have gjord det sådan, men det var lige noget jeg havde liggende
Avatar billede tofte Juniormester
13. august 2001 - 23:35 #11
gjord=gjort
Avatar billede kalt Nybegynder
13. august 2001 - 23:36 #12
Jeg må sige at så langt var jeg kommet selv, men jeg er da ked af du føler dig snydt.
Avatar billede kalt Nybegynder
13. august 2001 - 23:37 #13
Nu har du imidlertid chancen for at score ti gange så mange point
Avatar billede tofte Juniormester
13. august 2001 - 23:38 #14
jeg føler mig inne snydt, men jeg finder bare en pussig lighed med det jeg skrev. :-)
Avatar billede kalt Nybegynder
13. august 2001 - 23:39 #15
OK
Avatar billede kalt Nybegynder
13. august 2001 - 23:46 #16
eg har det her som virker:
Set Conn = Server.CreateObject(\"ADODB.Connection\")
DSN = \"DRIVER={Microsoft Access Driver (*.mdb)}; \"

Conn.Open strConnect
       
    Set objConn = Server.CreateObject (\"ADODB.Connection\")
    Set objRec2 = Server.CreateObject (\"ADODB.Recordset\")
   
    objConn.Open strconnect
   
    LinkID = Request.QueryString(\"linkid\")
   
    objRec2.Open \"links\", objConn, 0, 2, 2
   
    objRec2.Filter = \"LinkID = \" & LinkID
   
    objRec2.Update
    Response.Redirect(\"\"& objRec2(\"LinkURL\") &\"\")

    objRec2.Close
    Set objRec2 = Nothing
    objConn.Close
    Set objConn = Nothing
%>


Kan man ikke bare sætte en linie en
fx:
requestSet objRec3 = Server.CreateObject (\"ADODB.RecordSet\")
og så Request. et eller andet
Avatar billede tofte Juniormester
13. august 2001 - 23:58 #17
side oversigt.asp
strConnect = \"Data Source=d:\\home\\domæne\\db\\database.mdb;Provider=Microsoft.Jet.OLEDB.4.0;\"
Set Conn = Server.CreateObject(\"ADODB.Connection\")
DSN = \"DRIVER={Microsoft Access Driver (*.mdb)}; \"

Conn.Open strConnect

strSQL = \"Select * FROM links WHERE kategori = \'Samfund & Politik - Organisationer\'Order by LinkName\"

\' Udfør forespørgsel (rs indeholder nu resultatet)
Set rs = Conn.Execute(strSQL)

\' Gennemløb Recordset (rs) med en løkke
while not rs.eof

  Response.Write \"<B>\" & rs(\"LinkName\") & \"</B><br>\"
  Response.Write rs(\"Beskrivelse\") & \"<br>\"
  Response.Write \"<a href=\'redirect.asp?id=\"& rs(\"linkid\") &\"&url=\" & rs(\"LinkURL\") & \"\'>\" & rs(\"LinkURL\") &      \"</a><br><hr>\"

  rs.MoveNext
wend

Conn.Close
Set Conn = Nothing

side 2 redirect.asp
<%
strConnect = \"Data Source=d:\\home\\domæne\\db\\database.mdb;Provider=Microsoft.Jet.OLEDB.4.0;\"
Set Conn = Server.CreateObject(\"ADODB.Connection\")
DSN = \"DRIVER={Microsoft Access Driver (*.mdb)}; \"

Conn.Open strConnect

If Request.QueryString(\"id\") <> \"\" Then
SQLS=\"UPDATE links SET hits = hits+1 WHERE id=\"&Request.QueryString(\"id\")
Conn.Execute(SQLS)
conn.close
set conn=nothing
response.buffer=true
Response.Clear
Response.Redirect(Request.QueryString(\"url\"))
end if

%>
Avatar billede kalt Nybegynder
14. august 2001 - 00:04 #18
Det har jeg ikke set før ,
prøver lige igen
Avatar billede tofte Juniormester
14. august 2001 - 00:06 #19
du kan også lave opslaget på url\'en på side to. Men da du laver et opslag på side 1, kan du lige så godt sende url,en med over. Så bliver redirect.asp meget hurtigere.
Avatar billede kalt Nybegynder
14. august 2001 - 00:25 #20
En intern HTTP Header fejl ??
Avatar billede kalt Nybegynder
14. august 2001 - 00:25 #21
Undskyld.
En intern 500 server fejl
Avatar billede tofte Juniormester
14. august 2001 - 00:27 #22
står der noget om, hvilken linie fejlen er i
Avatar billede tofte Juniormester
14. august 2001 - 00:28 #23
tester du filerne på nettet eller lokalt
Avatar billede keysersoze Guru
14. august 2001 - 01:15 #24
her er et eksempel på noget jeg har lavet og som jeg VED virker:

<%

Response.Buffer = True

Set myConn = Server.CreateObject(\"ADODB.Connection\")
myConn.Open \"DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=\" & Server.MapPath(\"clickcount.mdb\")
If Request.QueryString(\"id\") <> \"\" Then
    Set rs = Server.CreateObject(\"ADODB.RecordSet\")
    strSQL = \"SELECT * FROM clickcount 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

%>

    <html>
    <head>
    <title>Et enkelt udtræk fra database</title>
    </head>
    <body>
    <p>Et enkelt udtræk fra database</p>

<%

strSQL = \"SELECT * FROM clickcount where id=3\"
Set rs = myConn.Execute(strSQL)

        Response.Write \"<p><a href=en_url.asp?id=\" & rs(\"id\") & \">\" & rs(\"url\") & \"</a><br>\"

myConn.Close
Set myConn = Nothing

%>
   
    </body>
    </html>

--------------

ellers sig hvad der kommer af fejl (og prøv lige dette først: Tools>Internet Options>Advanced>Uncheck \"Show friendly HTTP-errors\"
Funktioner>Internet Instillinger>Avanceret>Fjern kryds i \"Vis uskadelige HTTP-fejl\")
Avatar billede carpediem Nybegynder
14. august 2001 - 09:12 #25
Følgende skal virke. Ellers er det noget andet kode den er gal med:

<%
If NOT LEN(Trim(Request.QueryString(\"id\") <= 0 Then
    Set objConn = Server.CreateObject(\"ADODB.Connection\")
    strConnPath = \"DBQ=\" & Server.MapPath(\"virtuel/sti/til/databasen.mdb\")
    objConn.Open \"Driver={Microsoft Access Driver (*.mdb)};\" & strConnPath
    Set rs = Server.CreateObject(\"ADODB.RecordSet\")
    strSQL = \"SELECT * FROM links WHERE (LinkID = \" & Request.QueryString(\"\") & \")\"
    rs.Open strSQL, objConn, 1, 3
    If rs.RecordCount > 0 Then
        rs(\"Hits\") = rs(\"Hits\") + 1
        strURL = rs(\"LinkURL\")
        rs.Update
        Response.Redirect(strURL)
    End If
    rs.Close
    objConn.Close
    Set rs = Nothing
    Set objConn = Nothing
End If
%>
Avatar billede carpediem Nybegynder
14. august 2001 - 09:14 #26
Okay ovenstående virker måske ikke.

If NOT LEN(Trim(Request.QueryString(\"id\") <= 0 Then

Skal lige laves om til

If NOT LEN(Trim(Request.QueryString(\"id\"))) <= 0 Then

Og

strSQL = \"SELECT * FROM links WHERE (LinkID = \" & Request.QueryString(\"\") & \")\"


laves om til

strSQL = \"SELECT * FROM links WHERE (LinkID = \" & Request.QueryString(\"id\") & \")\"
Avatar billede kalt Nybegynder
14. august 2001 - 12:50 #27
OK, til keysersoze\'s svar
Her får jeg følgende:

Server.MapPath() error \'ASP 0172 : 80004005\'

Invalid Path

/redirect.asp, line 6

The Path parameter for the MapPath method must be a virtual path. A physical path was used.
Avatar billede carpediem Nybegynder
14. august 2001 - 12:56 #28
Det er fordi du stadig skriver c:\\bla\\bla

Du skal kun skrive den virtuelle sti.

altså stien efter domæne.dk
Avatar billede keysersoze Guru
14. august 2001 - 13:00 #29
myConn.Open \"DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=\" & Server.MapPath(\"clickcount.mdb\")

skal ændres til fx

myConn.Open \"DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=\" & Server.MapPath(\"../db/db.mdb\")

eller

myConn.Open \"DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=\" & Server.MapPath(\"/db/db.mdb\")

eller

.... ja - det kommer an på placeringen af filerne i forhold til hinanden!

Avatar billede kalt Nybegynder
14. august 2001 - 13:46 #30
Jeg har prøvet, men så kommer den med
Et enkelt udtræk fra database

Microsoft OLE DB Provider for ODBC Drivers error \'80004005\'

[Microsoft][ODBC Microsoft Access Driver]General error Unable to open registry key \'Temporary (volatile) Jet DSN for process 0x240 Thread 0x490 DBC 0x108bf024 Jet\'.

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