Exekvera denna sats (med lämpliga modifikationer).
"UPDATE tabellen set visningar=visningar+1 WHERE id=" & request("id")
10 svar · 284 visningar · startad av Pudolf
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
Exekvera denna sats (med lämpliga modifikationer).
"UPDATE tabellen set visningar=visningar+1 WHERE id=" & request("id")
tack emission!
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.
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.
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.
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.
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
@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!
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?
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