webForumDet fria alternativet

uppdatera fält från en loop..

ASP

8 svar · 260 visningar · startad av Hallgren

Medlem sedan dec. 19991 606 inlägg
Frågan#1

Yo!

Sitter här och dricker kallt kaffe, lyssnar på Weird Al och stirrar på ett problem som jag inte trodde jag skulle träffa på när jag började att göra detta lilla skript men, men :l

Ska uppdatera fält som är framloopade från dbn men jag kan inte komma på hur jag ska göra min lilla update rad. :( Varför? jo, alla fällt loppas ut med namn och med ett input fält (var) där man ska skriva in det nya nr. MEN alla fält ligger inom samma formulär och har bara en submit knapp. Det blir att man uppdatera ett fält på flera ställen samtidigt. Hänger någon med? :)

Vet inte riktigt vad jag behöver säga mer så om ni behöver mer info för att hjälpa mig på något sätt så säg till.

Fridens!

Medlem sedan mars 20015 287 inlägg
#2

Lite kod kanske?

Medlem sedan dec. 19991 606 inlägg
#3

...

Kod är egentligen det jag inte har..typ :)

Det lilla jag har ju nu är..

<%
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "driver={MYSQL};server=localhost;db=webshop;uid=;pwd=;"

Set prod_antal = Connect.Execute("SELECT * FROM varor WHERE lager < 5")
%>
<form method="post" action="main.asp?product_update=yes">
<table border="0" width="400">

	<tr>		
		<td colspan="4" height="20">
		<b style="color:#ee0000">Följade varor börjar att ta slut i lagret!</b>
		</td>
	</tr>
	<tr>
		<td width="100">
		<b>Produkt</b>
		</td>

		<td width="100" align="center">
		<b>Artikelnumer</b>
		</td>
	
		<td width="100" align="center">
		<b>I lager</b>
		</td>
		
		<td width="100" align="center">
		<b>Nytt antal</b>
		</td>
	</tr>

<%
Do until prod_antal.eof
%>

	<tr>
		<td width="100">
		<%=prod_antal("vara")%>
		</td>
	
		<td width="100" align="center">
		<%=prod_antal("artnr")%>
		</td>
	
		<td width="100" align="center">
		<%=prod_antal("lager")%>
		</td>

		<td width="100" align="center">
		<input type="text" size="3" name="<%=prod_antal("artnr")%>">
		</td>
	</tr>
<%
prod_antal.MoveNext
Loop

Connect.Close
Set Connect = Nothing
%>
Medlem sedan dec. 19991 606 inlägg
#4

...

..det kanske inte går att lösa. Någon som har ett bättre förslag?

Medlem sedan dec. 200012 464 inlägg
#5

Jo, det går nog att ordna

Om du lägger till ett hidden fält som innehåller alla artikelnummer

<input type="hidden" name="artnr" value="<%=prod_antal("artnr")%>">

och sedan på uppdaterings sidan


for each artnr in request.form("arntr")
query = "update varor set lager = " & request.form(artnr) & " where artnr = " & artnr
connect.execute query,,128
next

Det går att få ihop det till en en update-fråga

query = "update varor set lager = case artnr "
for each artnr in request.form("artnr")
query = query & "when " & artnr & " then & request.form(artnr) & " "
next
query = query & " end where atrnr in (" & request.form("artnr") & ")"

Det här förutsätter att artnr är numeriskt annars så får man dona lite till.

Medlem sedan dec. 19991 606 inlägg
#6

...uh?

nu är jag lite osäker på vilken snutt jag ska använda.. :l

[r]
Mmmm, nu har jag missförstått något. :l Jag måste ju hämta det nya värdet någonstans, men vart gör jag det i din kod?

Medlem sedan dec. 200012 464 inlägg
#7

Jag tänkte att fältet som du döper till samma namn som artiklenummer skulle innehålla det nya värdet för lager.

Medlem sedan dec. 19991 606 inlägg
#8

..typ?

Detta funkar iallafall inte. Mmm, har nog missförståt något..igen. :l

<%
If request.querystring("product_update") = "yes" then

Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "driver={MYSQL};server=localhost;db=webshop;uid=;pwd=;"

for each artnr in request.form("arntr")
query = "update varor set lager = " & request.form("artnr") & " where artnr = " & artnr
connect.execute query,,128
next

Connect.Close
Set Connect = Nothing

else
%>

<%
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "driver={MYSQL};server=localhost;db=webshop;uid=;pwd=;"

Set prod_antal = Connect.Execute("SELECT * FROM varor WHERE lager < 5")
%>
<form method="post" action="main.asp?product_update=yes">
<table border="0" width="350">

	<tr>		
		<td colspan="3" height="20">
		<b>Följade varor har nått den uppsatta minimumgränsen</b>
		</td>
	</tr>
	<tr>
		<td width="150">
		<b>Produkt</b>
		</td>
	
		<td width="100" align="center">
		<b>I lager</b>
		</td>
		
		<td width="100" align="center">
		<b>Nytt antal</b>
		</td>
	</tr>

<%
Do until prod_antal.eof
%>

	<tr>
		<td width="150">
		<%=prod_antal("vara")%>
		</td>
	
		<td width="100" align="center">
		<%=prod_antal("lager")%>
		</td>

		<td width="100" align="center">
		<input type="text" size="3" name="<%=prod_antal("artnr")%>">
		<input type="hidden" name="artnr" value="<%=prod_antal("artnr")%>">
		</td>
	</tr>
<%
prod_antal.MoveNext
Loop

Connect.Close
Set Connect = Nothing
%>

	<tr>
		<td colspan="4">
		<input type="submit" value="uppdatera">
		</td>
	</tr>
</table>
</form>
<%
end if
%>
Medlem sedan dec. 19991 606 inlägg
#9

...

Nu blir jag bara ledsen. Jag får det inte att funka! :(

264 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
123 ms — deklarationer (db)
0 ms — hämta statistik (cache)
138 ms — hämta tråd, inlägg och bilagor (db)
122 ms — ändringar (db)