webForumDet fria alternativet

Uppdatera databas vid klick på länk...

ASP

4 svar · 350 visningar · startad av mattiasnordin

Medlem sedan maj 20012 080 inlägg
Frågan#1

hmmm... god söndag på er.

Jag tänkte att jag skulle göra en räknare som räknar antalet gånger någon har tryckt på en viss länk på en sida. Men jag vet inte riktigt hur jag enklast fixar till detta.

Jag vill alltså att när någon klickar på en länk så ska:
1.) en ränkare i en accessdatabas räkna +1.
2.) url:en ska laddas som vanligt.

Jag har sett sidor med liknande funktionalitet. Behöver lite vägledning för att komma igång...

Mvh
Mattias

Medlem sedan dec. 200012 464 inlägg
#2

Nu vet jag inte hur din databas ser ut, men jag antar att det är något i stil med

-----
ID tal primärnyckel
URL text
VISITS tal

Då kan du lägga dina länkar så här

<a href='countClick.asp?id=4711'> [url]www.yyy.cm[/url] </a>

och på countClick.asp så

dim connect,rs,url
set connect = server.createobject("adodb.connection")
connect.open dsn
set rs = connect.execute("select url from links where id = " & request.querystring("id"))
if  not rs.eof then
    connect.execute "update links set visits = visits + 1 where id = " & request.querystring("id") ,,128
   url = rs("url")
else
   url = ""
end if
rs.close
set rs = nothing
connect.close
set connect = nothing
if url <> "" then
  response.redirect url
else
  response.redirect "error.asp"
end if
Medlem sedan maj 20012 080 inlägg
#3

Vad betyder det sista i följande rad? Alltså ,,128?

connect.execute "update links set visits = visits + 1 where id = " & request.querystring("id") ,,128
Medlem sedan nov. 20017 144 inlägg
#4

Det är det många som har frågat innan dig, jag saxade lite ur ett sökresultat.

--------------------------------------------------------------------------------
128 innebär att man inte skapar något recordset överhuvudtaget. Om man inte anger det skapar ado ett tomt och stängt recordset när man gör execute på en fråga som inte returnerar några poster. Det blir en liten prestandafördel på det sättet, vet inte exakt hur mycket det betyder, förmodlugen ganska lite.

,, innebär att man utelämnar en parameter i anropet.

i execute så kan man skicka med en parameter som kommer att innehålla antalet rader som påverkades av operationen.
--------------------------------------------------------------------------------

MVH Jesper T

Medlem sedan maj 20012 080 inlägg
#5

Tack för svaret. Nu lärde man sig något nytt...

Tack även till GuruLars som hjälpte mig på traven med räkningen...

Resultates hittas på: http://mattiasnordin.net/web2002/index.html om någon skulle vara intresserad.

265 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
129 ms — deklarationer (db)
0 ms — hämta statistik (cache)
134 ms — hämta tråd, inlägg och bilagor (db)
128 ms — ändringar (db)