webForumDet fria alternativet

Uppdatera

8 svar · 277 visningar · startad av Thompa__85

Thompa__85Medlem sedan aug. 2002600 inlägg
#1

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
#2

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..

Thompa__85Medlem sedan aug. 2002600 inlägg
#3

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
#4

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.

 

Thompa__85Medlem sedan aug. 2002600 inlägg
#5

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
#6

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]
Thompa__85Medlem sedan aug. 2002600 inlägg
#7

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 :/

Thompa__85Medlem sedan aug. 2002600 inlägg
#8

någon som kan?

PalleMedlem sedan apr. 20003 174 inlägg
#9

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?

129 ms totalt · 3 externa anrop · v20260731065814-full.102f7fcd
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
126 ms — hämta tråd, inlägg och bilagor (db)