13. august 2001 - 22:52Der 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 %>
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:
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 %>
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 %>
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 %>
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.
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
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.
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)
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\")
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\'.
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.