webForumDet fria alternativet

Huvudbry, matris problem..

5 svar · 228 visningar · startad av K++

K++Medlem sedan juli 2002171 inlägg
#1

Det är så att jag försöker skapa en kundvagn, eller e-portalsystem, började igår att programera lite, tog lite inspiration om hur man skulle lösa variabeln från någon sida som jag inte kommer ihåg adressen till. Har löst en hel del problem, dock vet jag inte hur man löser detta. När jag skickar tex id #22 så fungerar allt som det ska, allting kommer fram som det ska osv. Men om jag vill posta ny data till lagg_till.asp så omdefinieras hela arrayen med det senaste resultatet..

Alltså blir den första arrayen = den andra.

Någon som kan finna svar till detta problem?

 
[b]global.asa filen[/b]
<SCRIPT LANGUAGE=VBScript RUNAT=Server>
Sub Application_OnStart

End Sub

Sub Session_OnStart
	ReDim abiCustomerbag(4,10)
	Session("bag") = abiCustomerbag
	
	
	
	Application.Lock
		Application("kunder") = Application("kunder") + 1
	Application.UnLock
end sub
Sub Session_OnEnd
	Application.Lock
		Application("kunder") = Application("kunder") + 1
	Application.UnLock
	Session.Abandon
end sub
</SCRIPT>

[b]lagg_till.asp[/b]

<%
Dim ID, antal, databas, sql, conn, rsProdukter, i, e

ID = Request.Form("ID")
antal = Request.form("antal")

if ID <> "" Then

	databas =  "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Inetpub\wwwroot\databasen.mdb;"

	Set conn = Server.CreateObject("ADODB.Connection")
	conn.open databas

	sql = "SELECT * FROM produkter where ID = " & ID &""

	Set rs = Server.CreateObject("ADODB.Recordset")
	rs.Open sql, conn, 3,3

	i = Session("antal")
	abibag = Session("bag")

	if Not rs.EOF then
		i = i + 1
		Session("antal") = i
		abibag(1,i) = ID
		abibag(2,i) = antal
		abibag(3,i) = rs("namn")
		abibag(4,i) = rs("kostnad")
		Session("bag") = abibag
		
		
		rs.close
		set rs = nothing
		conn.close
		set conn = nothing

	end if
end if

nSumSubtotals = 0	
For e = 1 To i

Response.write abibag(1,i) 
Response.write ("-----------")
Response.write abibag(2,i) 
Response.write ("-----------")
Response.write abibag(3,i)
Response.write ("-----------")
Response.write abibag(4,i)
Response.Write ("<br>")
Next

%>
OveRRidEMedlem sedan feb. 200112 078 inlägg
#2

Array i session-scope? Aja baja. ;)

Jag förstår dock inte riktigt vad du menar?

K++Medlem sedan juli 2002171 inlägg
#3

Vad finns det för nackdelar att använda arrayer i session-scopes?

Problemet är att om jag skickar en sak som skall köpas till lagg_till.asp så blir resultatet något i stil med:

22 ----------- 3 ----------- Tv ----------- 4000 (alltså tre Tvaparater (har id #22) kostnad 4000)

Än så länge så fungerar allt väl.. Jag går sedan tillbaka och lägger till en dator. Då borde det se ut så här:

22 ----------- 3 ----------- Tv ----------- 4000
23 ----------- 2 ----------- Dator ----------- 10000

Men resultatet blir istället så här:
23 ----------- 2 ----------- Dator ----------- 10000
23 ----------- 2 ----------- Dator ----------- 10000

... och jag har ingen aning varför.. Hela arrayen tar det senaste värdet..

OveRRidEMedlem sedan feb. 200112 078 inlägg
#4

Sessioner kan diskuteras för och emot i evigheters evigheter, men personligen tycker jag att man skall vara försiktig med att tillåta placering av en tillsynes okontrollerad mängd data i en sessionsvariabel om man räknar med många besökare.

Nu kanske jag susar fel om array:s, men varför har du Redim i Session_onStart? Det verkar lite konstig strukturerat såsom du byggt det nu.

Du har även glömt att tilldela ett värde till session("antal") eller har du det på något annat ställe i applikationen? Likaså variabeln e saknar värde och dessa två påverkar loopen och din array-visning.

K++Medlem sedan juli 2002171 inlägg
#5

Anledningen till att jag har en ReDim beror på VBS nackdel att omdefiniera senare, du kan som sagt kan du enbart ändra den sista "dimensionen" av en VB array utan att förlora all dess innehåll.

Om jag definierar e till ett tidigare så blir det ingen skillnad, ej heller om jag lägger till Session("antal") i global.asa..

hm.. Ska försöka komma på vad som är fel nu..

K++Medlem sedan juli 2002171 inlägg
#6

Jag har lyckats lösa det nu, gjorde om ReDimen till en dictionary

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