Avatar billede goose Nybegynder
17. august 2004 - 09:22 Der er 6 kommentarer og
1 løsning

Hjælp til formular og databaseopdatering

Jeg er rendt i et et lille problem som jeg ikke rigtig kan se en løsning på, og setup'et er følgende:

Jeg har en formular hvor folk kan bestille nogle varer.
Når man klikker på "Næste" kommer man over på en ny side hvor jeg lister hvad der er bestilt ud fra devicen:

<%
for each varenr in Request.Form
antal="" & varenr
if request.form(antal) = "" then
else
%>
Varenr: <%=varenr%><BR>
Bestilt antal: <%=request.form(antal)%>
<INPUT TYPE="hidden" NAME="Varenr. <%=varenr%>" VALUE=" bestilt antal: <%=request.form(antal)%>">
<%
end if
next
%>

og det virker også ok.

Nu skal man så indtaste sit navn og adresse og trykke på "Send" og når dette sker, skal varelageret nedskrives med det antal der er bestilt. Her lagde jeg så ud med at overfører værdierne fra bestillingen som hidden og lavede så igen for each løkke, men det fungerer jo ikke rigtigt idet adresseoplysningerne jo nu også er en del af formualaren.

Spørgsmålet er derfor: hvordan gør jeg så ?!?

/Goose
Avatar billede fennec Nybegynder
17. august 2004 - 09:32 #1
Jeg ville lave denne opbygning i stedet.

<input type="hidden" name="vareID" value="<%=varenr%>"><type="hidden" name="Antal="<%=varenr%>"
Avatar billede fennec Nybegynder
17. august 2004 - 09:33 #2
prøver lige igen. Kom til at trykke på send knappen. 2 min...
Avatar billede fennec Nybegynder
17. august 2004 - 09:45 #3
<%
for each varenr in Request.Form("vareID")
if request.form("antal"& varenr) <> "" then
%>
Varenr: <%=varenr%><BR>
Bestilt antal: <%=request.form("antal"& varenr)%>
<input type="hidden" name="vareID" value="<%=varenr%>"><input type="hidden" name="Antal<%=varenr%>" value="<%= request.form("antal"& varenr) %>">
<%
end if
next
%>

Det kræver nok lidt ombygning på den tidligere side.

Ideen bag er at du har et felt (et array) som hedder "vareID". Så kan du hente alle id'erne ud med:
for each varenr in Request.Form("vareID")

Samtidig har du så et felt som hedder "antal+vareID'et". Den vil så være unik og derfor kan du hente antallet med:
<%=request.form("antal"& varenr)%>
inde i løkken.

Er det til at forstå, for jeg synes jeg har svært ved at forklare det????
Avatar billede goose Nybegynder
17. august 2004 - 10:17 #4
Jeg må sg* indrømme at jeg ikke er helt med, jeg skitserer lige lidt dybere hvis du så vil guide mig ud fra det.

varer.asp:

<TABLE>
<TR valign="top">
    <TD width="60" align="right" class="tekstfelt2"><%=rs3("indhold")%><%=rs3("indholdtype")%></TD>
    <TD width="80" align="right" class="tekstfelt2"><%=rs3("pris")%><%=rs3("pristype")%></TD>
    <TD width="80" align="right" class="tekstfelt2"><%=rs3("kg_pk")%></TD>
    <TD width="50" align="center" class="tekstfelt2">

<% if rs3("lagerantal") > 0 then %>

<SELECT SIZE="1" NAME="<%=rs3("id")%>">
    <OPTION SELECTED value="">0</OPTION>
    <OPTION value="1">1</OPTION>
    <OPTION value="2">2</OPTION>
    <OPTION value="3">3</OPTION>
    <OPTION value="4">4</OPTION>
    <OPTION value="5">5</OPTION>
    <OPTION value="6">6</OPTION>
    <OPTION value="7">7</OPTION>
    <OPTION value="8">8</OPTION>
    <OPTION value="9">9</OPTION>
    <OPTION value="10">10</OPTION>
    <OPTION value="11">11</OPTION>
    <OPTION value="12">12</OPTION>
    <OPTION value="13">13</OPTION>
    <OPTION value="14">14</OPTION>
    <OPTION value="15">15</OPTION>
    </SELECT>
<% end if %>

</TD>
</TR>
</TABLE>

Denne formular sender det pågældende ID nummer og antal videre til

bestilling.asp:

<TABLE WIDTH="600" BORDER="0" align="center">
<%
for each vareid in Request.Form
antal="" & vareid
if request.form(antal) = "" then
else
SQL = "select * from varer where id=" & vareid
set rs=conn.execute(SQL)
%>
<TABLE WIDTH="600" BORDER="0" align="center">
<TR valign="top">
    <TD>Varenr: <%=rs("varenr")%></TD>
    <TD align="right">Bestilt antal: <%=request.form(antal)%></TD>
</TR>
</TABLE>
<TABLE WIDTH="600" BORDER="0" align="center">
<TR valign="top">
<TD><%=replace(rs("varenavn"), vbcrlf, "<BR>")%></TD>
</TR>
</TABLE>
<HR SIZE="1" WIDTH="600">

<INPUT TYPE="hidden" NAME="<%=rs("id")%>" VALUE="<%=request.form(antal)%>">

<%
rs.close
set rs=nothing
end if
next
conn.close
set conn = nothing
%>

Derudover er der på siden formualarfelter til navn, adresse etc. som skal sendes til:

tak.asp

Når denne side kaldes, skal databasen så nedskrive vareantallet ud for hver enkelt vare med det antal der er bestilt, altså et loop igen.

Jeg kan ikke rigtig se hvor jeg sætter dit ind ?

/Goose
Avatar billede fennec Nybegynder
17. august 2004 - 10:48 #5
Som jeg ville gøre det. Skal du have et ekstra hiddenfelt på varer.asp siden. Også skal man aldrig have navne, som kun er tal.

varer.asp:
....
<input type="hidden" name="vareID" value="<%=rs3("id")%>">
<SELECT SIZE="1" NAME="antal<%=rs3("id")%>">
....

bestilling.asp:

<TABLE WIDTH="600" BORDER="0" align="center">
<tr>
    <td>Navn: <input type="Text" name="navn" value=""></td>
</tr>
<tr>
    <td>Add: <input type="Text" name="addresse" value=""></td>
</tr>
<%
for each vareid in Request.Form("vareid")
if request.form("antal"&vareid) <> "" then
  SQL = "select * from varer where id=" & vareid
  set rs=conn.execute(SQL)
%>
<TABLE WIDTH="600" BORDER="0" align="center">
<TR valign="top">
    <TD>Varenr: <%=rs("varenr")%></TD>
    <TD align="right">Bestilt antal: <%=request.form("antal"&vareid)%></TD>
</TR>
</TABLE>
<TABLE WIDTH="600" BORDER="0" align="center">
<TR valign="top">
<TD><%=replace(rs("varenavn"), vbcrlf, "<BR>")%></TD>
</TR>
</TABLE>
<HR SIZE="1" WIDTH="600">

<input type="hidden" name="vareID" value="<%=vareid%>"><input type="hidden" name="Antal<%=vareid%>" value="<%= request.form("antal"& vareid) %>">

<%
rs.close
set rs=nothing
end if
next
conn.close
set conn = nothing
%>


På tak.asp siden kaldes igen med løkken:

<%
for each vareid in Request.Form("vareid")
  conn.execute("insert into DinDatabase(vareid,antal) values("& vareid &","& Request.Form("antal"& vareid) &")")
next %>

Noget i den stil.
Avatar billede goose Nybegynder
17. august 2004 - 11:13 #6
Takker, så lykkedes det, smider du lige et svar ?

/Goose
Avatar billede fennec Nybegynder
17. august 2004 - 11:19 #7
no prob :o)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester