Hejsan!
Har denna kod:
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & server.mappath ("../databas/saker.mdb")
Set saker = Server.CreateObject("ADODB.Recordset")
Addera = "SELECT * FROM saker where vemsid='"&session("id")&"'"
saker.Open Addera, Connect, 3, 3
if Session("vara") = saker("sak") then
saker("antal") = saker("antal") + 1
saker.update
else
saker.addnew
saker("sak") = Session("vara")
saker("vemsid") = Session("id")
saker("antal") = Session("antal")
saker.update
end if
response.redirect "../klotter.asp"
Jag vill alltså att den kollar: Om Session("vara") är lika med saker("sak").. saker("sak") är vad användaren redan har för varor.. å har användaren redan en vara som är lika som Session("vara") så ska den uppdatera saker("antal"). Men är dom olika ska den lägga till en ny.. men det funkar inte att göra så den lägger på antal om varan är lika.. den skapar en ny rs varje gång.. varför?
PalleMedlem sedan apr. 20003 174 inlägg Så här kanske..
[red]<%
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source ="& Server.MapPath("../databas/saker.mdb")
Set RecSet = Connect.Execute("SELECT sak FROM saker WHERE vemsid='"& Session("id") &"'")
If NOT RecSet.EOF Then
strSak = RecSet("sak")
RecSet.Close
If LCase(Session("vara")) = LCase(strSak) Then
Connect.Execute("UPDATE saker SET antal=antal+1 WHERE vemsid='"& Session("id") &"'"),,128
Else
Connect.Execute("INSERT INTO saker (sak, vemsid, antal) VALUES('"& Session("vara") &"', '"& Session("is") &"', "& Session("antal") &")"),,128
End If
Set RecSet = Nothing
Connect.Close
Set Connect = Nothing
Response.Redirect "../klotter.asp"
%>[/red]
Med observation för vissa ändringar pga din datatyper, här gissar jag bara..
Palle skrev:
Så här kanske..
[red]<%
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source ="& Server.MapPath("../databas/saker.mdb")
Set RecSet = Connect.Execute("SELECT sak FROM saker WHERE vemsid='"& Session("id") &"'")
If NOT RecSet.EOF Then
strSak = RecSet("sak")
RecSet.Close
If LCase(Session("vara")) = LCase(strSak) Then
Connect.Execute("UPDATE saker SET antal=antal+1 WHERE vemsid='"& Session("id") &"'"),,128
Else
Connect.Execute("INSERT INTO saker (sak, vemsid, antal) VALUES('"& Session("vara") &"', '"& Session("is") &"', "& Session("antal") &")"),,128
End If
Set RecSet = Nothing
Connect.Close
Set Connect = Nothing
Response.Redirect "../klotter.asp"
%>[/red]
Med observation för vissa ändringar pga din datatyper, här gissar jag bara..
Nja, jag testade köpa en sak jag redan hade.. men den uppdaterade inte antalet utan skapade en ny :/ Vet nån varför?
PalleMedlem sedan apr. 20003 174 inlägg Testa det här då:
[red]<%
bolVaraFinns = False
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source ="& Server.MapPath("../databas/saker.mdb")
Set RecSet = Connect.Execute("SELECT sak FROM saker WHERE vemsid='"& Session("id") &"' AND sak='"& Session("vara") &"'")
If NOT RecSet.EOF Then
bolVaraFinns = True
Else
bolVaraFinns = False
End If
RecSet.Close
Set RecSet = Nothing
Connect.Close
Set Connect = Nothing
If bolVaraFinns = True
Connect.Execute("UPDATE saker SET antal=antal+1 WHERE vemsid='"& Session("id") &"' AND sak='"& Session("vara") &"'"),,128
Else
Connect.Execute("INSERT INTO saker (sak, vemsid, antal) VALUES('"& Session("vara") &"', '"& Session("id") &"', "& Session("antal") &")"),,128
End If
Response.Redirect "../klotter.asp"
%>[/red]
En fråga bara:
- Varför använder du Sessions, känns väldigt onödigt.
Palle skrev:
Testa det här då:
[red]<%
bolVaraFinns = False
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source ="& Server.MapPath("../databas/saker.mdb")
Set RecSet = Connect.Execute("SELECT sak FROM saker WHERE vemsid='"& Session("id") &"' AND sak='"& Session("vara") &"'")
If NOT RecSet.EOF Then
bolVaraFinns = True
Else
bolVaraFinns = False
End If
RecSet.Close
Set RecSet = Nothing
Connect.Close
Set Connect = Nothing
If bolVaraFinns = True
Connect.Execute("UPDATE saker SET antal=antal+1 WHERE vemsid='"& Session("id") &"' AND sak='"& Session("vara") &"'"),,128
Else
Connect.Execute("INSERT INTO saker (sak, vemsid, antal) VALUES('"& Session("vara") &"', '"& Session("id") &"', "& Session("antal") &")"),,128
End If
Response.Redirect "../klotter.asp"
%>[/red]
En fråga bara:
- Varför använder du Sessions, känns väldigt onödigt.
Det funkar nästan...
den lägger till +1 istället för Session("antal")... Varför??
PalleMedlem sedan apr. 20003 174 inlägg
Thompa__85 skrev:
Det funkar nästan...
den lägger till +1 istället för Session("antal")... Varför??
Därför att du sa att det var så det skulle vara.. ;)
Ändra sql-satsen för UPDATE till detta så borde det göra susen:
[red]Connect.Execute("UPDATE saker [blue]SET antal="& Session("antal") &"[/blue] WHERE vemsid='"& Session("id") &"' AND sak='"& Session("vara") &"'"),,128[/red]
Palle skrev:
Thompa__85 skrev:
Det funkar nästan...
den lägger till +1 istället för Session("antal")... Varför??
Därför att du sa att det var så det skulle vara.. ;)
Ändra sql-satsen för UPDATE till detta så borde det göra susen:
[red]Connect.Execute("UPDATE saker [blue]SET antal="& Session("antal") &"[/blue] WHERE vemsid='"& Session("id") &"' AND sak='"& Session("vara") &"'"),,128[/red]
Nja.. nu blir de så att har man varan innan lägger den inte på nån alls :/
PalleMedlem sedan apr. 20003 174 inlägg
Thompa__85 skrev:
Nja.. nu blir de så att har man varan innan lägger den inte på nån alls :/
Finns Session("antal") då, och har den något värde?