webForumDet fria alternativet

Räkna hur många ggr posten är visad

ASP

10 svar · 252 visningar · startad av Pudolf

Medlem sedan juli 2000221 inlägg
Frågan#1

Hejsan.

Jag har en databas med en tabell som heter Artiklar, där finns en kolumn som heter "Visningar". I den tänkte jag lagra hur många gånger artikeln för den raden har visats. Men jag vet inte hur jag ska skriva koden.

Hade tänkt göra det med en querystring. länken ser ut så här då: http://minsida.com/artikel.asp?id=1&annat=visning

då skulle man väl kunna ha en kod som lägger till 1 till den posten varje gång man besöker den sidan?

Men hur ska koden se ut?

Tacksam för svar!
/mvh pudolf

Medlem sedan dec. 19996 721 inlägg
#2

Exekvera denna sats (med lämpliga modifikationer).

"UPDATE tabellen set visningar=visningar+1 WHERE id=" & request("id")

------------------
-------------------
What a waste it is to lose one's mind. Or not to have a mind is being very wasteful. How true that is.
Dan Quayle

[Redigerat av emission den 02 jan 2001]

Medlem sedan juli 2000221 inlägg
#3

tack emission!

Medlem sedan juli 2000221 inlägg
#4

har bara en fråga.

jag skrev in koden du gav mig. men den verkar inte lägga in något i databasen. Jag har kolumnen Visningar som Number.

Jag vet inte riktigt om jag ska skriva något mer efter den kod du gav mig, har använt ett annat sätt att uppdatera tidigare.

tack.

Medlem sedan juni 200032 967 inlägg
#5

så länge du har något i request("id") så ska det vara lugnt.

under förutsättning, givetvis, att du använder connectionobjektets metod execute för att köra sql-frågan.

objconn.execute(strsql)

objconn och strsql byter du givetvis ut till något som passar dig bättre.

------------------
<A HREF="http://cartman.nu" TARGET=_blank>
if i'm not back in five minutes, just wait longer.</A>

[Redigerat av @nders den 02 jan 2001]

Medlem sedan juli 2000221 inlägg
#6

ok. så här ser det ut nu.

Set Connection = Server.CreateObject("ADODB.Connection")
Connection.Open "DBQ=" & Server.Mappath("/databaser/databas.mdb") & ";Driver={Microsoft Access Driver (*.mdb)};"

SQL = "UPDATE Artiklar SET visningar=visningar+1 WHERE id=" & request("id")
Connection.Execute(SQL)

SQL = "SELECT * FROM Artiklar WHERE id =" & Request("id")
SQL = SQL & " Order by id Desc"
Set RS = Connection.Execute(SQL)

Sedan när jag kör:

Response.write "" & RS("visningar") & ""

visas ingenting där det ska stå ungefär 10 (eftersom jag varit där ca 10 ggr)

Vad har jag gjort fel?
Tack.

Medlem sedan juni 200032 967 inlägg
#7

stämmer värdet du har med dig i request("id")?

skriv ut de färdiga sql-satserna med response.write istället för att exekvera dem en gång, så får vi se om sql-satserna stämmer till att börja med.

------------------
<A HREF="http://cartman.nu" TARGET=_blank>
if i'm not back in five minutes, just wait longer.</A>

Medlem sedan mars 20002 836 inlägg
#8

Hello,

Annars är detta en grej som man lätt kan köra med ADODB.Recordset istället för med ADODB.Connection objectet.

SQL = "SELECT * FROM Artiklar WHERE id =" & Request("id")
SQL = SQL & " Order by id Desc"

Set RS = Server.CreateObject("ADODB.Recordset")
RS.Open SQL, Connection, 3, 3
intVisningar = RS("visningar")
RS.AddNew
RS("visningar") = intVisningar + 1
RS.UpdateBatch

Response.Write RS("visningar")

RS.Close
Set RS = nothing

cya

------------------
'*********************
Response.Write("PatrikB")
Response.End
'*********************

[Redigerat av PatrikB den 02 jan 2001]

Medlem sedan juli 2000221 inlägg
#9

@nders:

jag skrev såhär i koden:

SQL = "UPDATE Artiklar SET visningar=visningar+1 WHERE id=" & request("id")
Connection.Execute(SQL)
response.write SQL

SQL = "SELECT * FROM Artiklar WHERE id =" & Request("id")
SQL = SQL & " Order by id Desc"
Set RS = Connection.Execute(SQL)
response.write SQL

Och detta kom då:

UPDATE Artiklar SET visningar=visningar+1 WHERE id=42

SELECT * FROM Artiklar WHERE id =42 Order by id Desc

Men den verkar fortfarande inte fungera..

PatrikB:
Jag testade din kod också. Men den blev något helknas med sidan. Allt gick snett, något med nån Replace-function jag hade ställde till det. Och jag är inte så duktig, så jag vet inte vad som är fel. Men tack för koden iaf!

Medlem sedan dec. 19996 721 inlägg
#10

datatypen för "visningar" måste vara tal, och standardvärdet 0. För att få 0 i alla gamla kan du köra

UPDATE artiklar set visningar=0

en gång (det kan du göra i Access). Sedan bör det funka.

PatrikBs kod innehåller en AddNew, och du vill väl inte lägga till fler rader i tabellen?

Medlem sedan mars 20002 836 inlägg
#11

Hello,

stämmer .... det kan gå så när man klipper och klistrar [:)] så RS.AddNew raden ska bort, men annars ska det funka ..

cya

------------------
'*********************
Response.Write("PatrikB")
Response.End
'*********************

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