webForumDet fria alternativet

Array

20 svar · 525 visningar · startad av pellsäter

pellsäterMedlem sedan aug. 2000533 inlägg
#1

Jag får inte i smaker och storlekar i min DB
Jag har i sidan innan ett textfält där man skriver in olika smakid och storleksid för en produkt och detta ska in i den tabell som heter rblRel.....

<%
tblsmak = Split(Request.form("tblsmak"),",") 

For x = 0 To UBound(tblsmak) 
Response.Write tblsmak(x) 
Next

tblstorlek = Split(Request.form("tblstorlek"),",") 

For x1 = 0 To UBound(tblstorlek) 
Response.Write tblstorlek(x1) 
Next

%>

<%
Set conn = Server.CreateObject("ADODB.Connection")
conn.Open "DSN=xxx"
sql2 = "Insert Into tblrel (smakid,storleksid,prodid) Values (" & Trim(tblsmak(x)) & "," & Trim(tblStorlek(x1)) & "," & prodid & ")"
conn.Execute(sql2)
conn.close
%>

Detta felet får jag

Microsoft VBScript runtime error '800a0009'

Subscript out of range: 'x'

/admin/admin_lagg_till_ok.asp, line 63

VideMedlem sedan dec. 19996 094 inlägg
#2
Set conn = Server.CreateObject("ADODB.Connection")
conn.Open "DSN=xxx"
for x = 0 to ubound(tblsmak)
sql2 = "Insert Into tblrel (smakid,storleksid,prodid) Values (" & Trim(tblsmak(x)) & "," & Trim(tblStorlek(x)) & "," & prodid & ")"
conn.Execute(sql2)
next
conn.close

Förutsatt att det är lika många element i båda arrayerna.

pellsäterMedlem sedan aug. 2000533 inlägg
#3

nej det kan var olika många smaker och olika många storlekar

och var får du in storlekarna?

VideMedlem sedan dec. 19996 094 inlägg
#4

Hur kan du då ha dom på samma post?
Om det är olika antal så skulle jag ha två olika tabeller.

pellsäterMedlem sedan aug. 2000533 inlägg
#5

va?
Jag har en tabell med storlekar det är väl 6st oliak sedan en med smaker det är 12st.... men sedan har jag en tabell som bara innehåller relationer och det är i den jag vill ha in detta

så här ser DB ut

PRODUKTER
prodID
vara
smak (JA)

TBLSMAKER
smakID
smak

TBLSTORLEKAR
storleksID
storlek

TBLREL
prodID
smakID
storleksID

VideMedlem sedan dec. 19996 094 inlägg
#6

Okej, så kommer varje produkt att ha ett smakID och ett storleksID?

pellsäterMedlem sedan aug. 2000533 inlägg
#7

inte nödvändigtvis... men jag gjorde om det nu så jag har en relataionstabell för smakerna och en för storlekarna

s

pellsäterMedlem sedan aug. 2000533 inlägg
#8

Lyckades få in både smaker och storlekar men när jag vill kunna ta bort en smak från en produkt så funkar det inte med denna update. nån som ser varför

<%
Set conn = Server.CreateObject("ADODB.Connection")
conn.Open "DSN=xxx"
sql1 = "Select prodid from produkter where item = '"& item &"' and prodnummer = "& prodnummer
Set rs = Server.CreateObject("ADODB.Recordset")
rs.open sql1, conn
response.write prodid
%> <%
pprodid = rs("prodid")
%> <%
rs.close
conn.close%>

<%
tblsmak = Split(Request.form("tblsmak"),",") 
response.write tblsmak
Set conn = Server.CreateObject("ADODB.Connection")
conn.Open "xxx"
for x = 0 to ubound(tblsmak)
sql2 = "Update tblrel (smakid) Values (" & Trim(tblsmak(x)) & ") where prodid = "&pprodid
conn.Execute(sql2)
next
conn.close
%>
pellsäterMedlem sedan aug. 2000533 inlägg
#9

ändarade SQL-satsen till

sql2 = "Update tblrel Set smakid = " & Trim(tblsmak(x)) & " where prodid = "&pprodid

men det ändras inte ändå

pellsäterMedlem sedan aug. 2000533 inlägg
#10

ingen som nån idé varför?

LukaspojkenMedlem sedan maj 20011 318 inlägg
#11

Vad får du ut för svar om du bara skriver ut, response.write UBound(tblsmak)

Kanske ska du kolla om tblsmak är en array först innan du loopar IF isArray(tblsmak) THEN
For....

pellsäterMedlem sedan aug. 2000533 inlägg
#12

jag får -1

LukaspojkenMedlem sedan maj 20011 318 inlägg
#13

Då är tblsmak ingen array...därför måste du köra IF isArray(tblsmak) THEN

I annat fall får du leva med felmeddelandet :)

pellsäterMedlem sedan aug. 2000533 inlägg
#14

La in denna kod men det uppdaterar inte db ändå??

<%
tblsmak = Split(Request.form("tblsmak"),",") 
response.write ubound(tblsmak)
Set conn = Server.CreateObject("ADODB.Connection")
conn.Open "DSN=xxxx"
IF isArray(tblsmak) THEN 
for x = 0 to ubound(tblsmak)
sql2 = "Update tblrel Set smakid = " & Trim(tblsmak(x)) & " where prodid = '"&pprodid&"'"

conn.Execute(sql2)
next

conn.close
end if

%>
VideMedlem sedan dec. 19996 094 inlägg
#15

Vart för du prodid ifrån och är det verkligen ett textfält?

pellsäterMedlem sedan aug. 2000533 inlägg
#16

PProdid får jag från en annan koppling till produktdb.... nej det är ignet texxtfält men jag provade att skriva

where prodid = "&pprodid

och det gör ingen skillnad men det ska väl stå som det ovan här väl?

och skriver jag ut pprodid så stämmer det

LukaspojkenMedlem sedan maj 20011 318 inlägg
#17

Vad får du för värde om du skriver

response.write Request.form("tblsmak")

samt

response.write prodid

pellsäterMedlem sedan aug. 2000533 inlägg
#18

jag får ingenting... och jag fattar inte varför.. i sidan innan har jag detta

<input type="text" name="tblSmak" size="3" class="thisform">

pellsäterMedlem sedan aug. 2000533 inlägg
#19

hittade felet.... jag hade inte lagt över rätt version av sidan.. men nu blir problemet att om jag har haft 5 olika smaker tidigare och jag bara ska ha en smak så ersätter den alla de tidigare 5 med den nya smaken 5 ggr

tex.
tidigare har produkten haft jordgubb och choklad som smak
Nu ska den bara ha jordgubb då läggs jordgubb i 2 ggr

eller

tidigare har produkten haft jordgubb som smak och nu ska den ha choklad, jorgubb och vanilj.. då läggs bara vanilj in

RelID ProdID SmakID
106 199 99
107 199 99
108 199 99
109 199 99

så här blir deti tblRel om jag lägger in smakid 99 och produkten tidare haft 4 smaker... lägger jag in 99 vill jag bara ha med den en gång ju....

och lägger jag in smakid 1,2,3 så vill jag bara ha dessa tre med i DB

LukaspojkenMedlem sedan maj 20011 318 inlägg
#20

Detta beror troligtvis på Where-satsen där du bara använt prodid.

Ett sätt du skulle kunna lösa detta på är att du först kör

IF isArray(tblsmak) THEN 
sql2 = "Delete tblrel Where prodid = " & prodid
conn.Execute(sql2)

for x = 0 to ubound(tblsmak)
sql2 = "INSERT INTO tblrel (smakid, prodid) Values (" & Trim(tblsmak(x)) & ", prodid)
conn.Execute(sql2)

next
End if
Genererad på 378 ms · cache AV · v20260730165559-full.f96bc7eb