webForumDet fria alternativet

probs med "läst antal gånger"

ASP

8 svar · 170 visningar · startad av laidback

Medlem sedan maj 2001797 inlägg
Frågan#1

har scannat arkivet efter sätt att skriva ut hur många gånger ett specifikt inlägg har visats.
kom fram till att i inläggstabellen lägga till ett fält exvis "hits" och sedan räkna upp detta varje gång inlägget visas, med en update.
("update tabellen set fältet=fältet+1 where osv" rekommenderades här

men.. om jag vill ha detta på den sidan som visar inlägget (går det öht?) istället för som någon sa "när man klickar på länken till inlägget?

så här ser koden som hämtar själva inlägget ut

<% View = "SELECT * FROM k_messages WHERE ID = " & Request.QueryString("messID") & " "
RecSet.Open View, Connect, adOpenStatic, adLockOptimistic
%>

kan jag peta in update-delen där i på något smidigt sätt?

------------------
I just lay back and let the big beat lead me

Medlem sedan jan. 2001101 inlägg
#2

1. Använd inte adovbs.inc! Istället för "adOpenStatic, adLockOptimistic" skriver du istället "3, 3".

2.
Fyll på med

RecSet("Hits") = RS("Hits") + 1
RecSet.Update

------------------
Dekt är ingen, alla är Dekt

Medlem sedan maj 2001797 inlägg
#3

1. eh. sure thing. kan du förklara varför?

2. hm. det inte händer ett dugg. den lägger inte till något alls i hits-fältet.

nu ser det ut

<% View = "SELECT * FROM k_messages WHERE ID = " & Request.QueryString("messID") & " "
RecSet.Open View, Connect, 3,3
 RecSet("hits") = RecSet("hits") + 1
RecSet.Update 
%>

och en bit ner

läst <% =RecSet("hits")%> gånger

------------------
I just lay back and let the big beat lead me

Medlem sedan aug. 20012 349 inlägg
#4

1. adovbs.inc är en fil med en hiskelig massa rader (300 eller nått) det innebär att 300 rader extra läses in på varje sida. Det är en massa extra bytes för servern att processa, vilket gö det långsammare.

Och allt det för att man normalt sett använder 2- 4 variabler i den.

Förslagsvis tar du antingen bort alla constanter i adovbs.inc som du inte använder, eller så skiter du i den och använder siffrorna direkt.

2. Eh, vet inte. Men kan du inte bara skriva ut <%=RS("Hits")+1%> och uppdatera sen eller nått.

------------------
National Blonde Day!
Alle ihre Basis ist uns gehört.

Medlem sedan maj 2001797 inlägg
#5

1. aha. i see. men om jag väljer att inte modda den filen, kan jag helt enkelt låta bli att inkludera den och bara skriva ut siffrorna? vad gör eg dessa siffror? och varför?

2. det gick inte så bra.
Type mismatch: '[string: "hits"]'
blir felmeddelandet om jag gör som du föreslog ovan.

------------------
I just lay back and let the big beat lead me

Medlem sedan dec. 200012 464 inlägg
#6

I det hör fallet så bestämmer siffrorna vilken cursortyp och låstyp du använder för ditt recordset.

Du kan definiera de värden du använder som egna konstanter för att öka läsbarheten

const adExecuteNoRecords = 128

(Det är den enda jag kan utantill.)

Kan du visa lite kod där du får ditt fel.

------------------
essentitia preter non sans multiplicandum

Medlem sedan maj 2001797 inlägg
#7

1. tack. något bra förslag på vart jag kan läsa mig till mer info om detta fenomen?

2. koden är som i inlägg nr 2
dvs

<% View = "SELECT * FROM k_messages WHERE ID = " & Request.QueryString("messID") & " "
RecSet.Open View, Connect, 3,3
RecSet("hits")+1
RecSet.Update 
%>

enligt mrblonde

innan

<% View = "SELECT * FROM k_messages WHERE ID = " & Request.QueryString("messID") & " "
RecSet.Open View, Connect, 3,3
 RecSet("hits") = RecSet("hits") + 1
RecSet.Update 
%>

och för att visa det

läst <% =RecSet("hits")%> gånger

------------------
I just lay back and let the big beat lead me

Medlem sedan dec. 200012 464 inlägg
#8

Här kan du hitta allt möjligt om ADO
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/ado270/htm/mdmscadomethods.asp ?frame=true&hidetoc=true

Version 2 borde fungera om du lägger till

<% View = "SELECT * FROM k_messages WHERE ID = " & Request.QueryString("messID") & " "
RecSet.Open View, Connect, 3,3
if isnull(RecSet("hits")) then
  recset("hits") = cint(1)
else
RecSet("hits") = clng(RecSet("hits")) + 1
end if
RecSet.Update 
%>

Jag tror nog att mrblonde menade att du i din utskrift skulle skriva

läst: <% =recset("hits")+1 %>

------------------
essentitia preter non sans multiplicandum

[Redigerat av LarsG den 08 nov 2001]

Medlem sedan maj 2001797 inlägg
#9

oh. tack. ska se om det bringar lite klarhet...

oj, jag missförstod nog mrblonde rätt ordentligt då.. :r

men nu fungerar det! härligt!
tack för hjälpen!

------------------
I just lay back and let the big beat lead me

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