Avatar billede sjoller Nybegynder
02. september 2001 - 20:53 Der er 15 kommentarer og
2 løsninger

Gennemløbe en forms indhold

Jeg har en form-side med en liste over poster. For hver af disse poster er der et værdi felt man skal kunne ændre og derefter submitte.

På min proceside skal jeg jo så gennemløbe / iterere gennem disse værdier og opdatere dem i databasen.

Hvordan gennemløber jeg dem i databasen og hvordan får jeg opdateret de rigtige poster?
Avatar billede ldanielsen Nybegynder
02. september 2001 - 21:21 #1
Hvis du sender formen med POST, så kan du i modtagelsen iterere gennem den med

for each feltnavn in Request.Form.Fields
  ...
next

Er det det du vil ??
Avatar billede sjoller Nybegynder
02. september 2001 - 21:28 #2
Problemet er at hvis jeg feks. laver en:

for each item in request.form
response.write request.form(item) &\"<br>\"
next

så får jeg kun værdierne. Men jeg skal jo have noget mere for at kunne update databasen ?
Avatar billede sjoller Nybegynder
02. september 2001 - 21:30 #3
jeg skal jo lave en

\"update [table] set [felt] = [værdi] where [felt] = [værdi]\"

og hvis jeg ikke har noget at sige \"where\" med så kan jeg jo ikke sætte noget ind i database, eller hvad ?
Avatar billede cuddles Nybegynder
02. september 2001 - 21:36 #4
det skal være en:

for each item in request.form
...
next
Avatar billede sjoller Nybegynder
02. september 2001 - 21:39 #5
cuddles >>
que? :-)
Avatar billede cuddles Nybegynder
02. september 2001 - 21:55 #6
Hehe, jeg var vist ikke helt vågen ;-)

Hvis du bruger recordsets, så kan du bruge:

rsDB.(item) = request.form(item)

og slutte af med en:

rsDB.UpdateBatch

Ellers så skal du (hvis du vil bruge en Update, der kan dog være problemer, hvis det er en opdatering, der tager tid - tro mig, jeg har været ude for det på en presset maskine):

sql = \"UPDATE [table] set \" & item & \" = \" & request.form(item) & \" where ID = \" & myID

så kan du fyre en:

connection.execute(sql)

af til databasen.
Avatar billede sjoller Nybegynder
02. september 2001 - 22:12 #7
jamen som min side kører nu henter request.form(item) kun værdien og så duer \"...set \"& item &\" = request.form(item)...\" jo ikke. Ydermere er jeg i tvivl om hvor værdien \"myID\" kommer fra ?
Avatar billede sjoller Nybegynder
02. september 2001 - 22:20 #8
Avatar billede cuddles Nybegynder
02. september 2001 - 22:23 #9
item vil i hvert gennemløb være en variabel, som indeholder navnet på den formitem, som du har fat i nu - derfor kan du lave tricket, som jeg foreslår.
For at se dette, så kunne du jo prøve at lave en:

response.write(\"<p>Feltnavn: \'\" & item & \"\'<br>\")
response.write(\"V&aelig;rdi: \'\" & request.form(item) & \"\'</p>\")

myID har jeg sat ind fordi, du er vel klar over, hvilken record du skal ind og have fat i, ikke?
Avatar billede sjoller Nybegynder
02. september 2001 - 22:31 #10
Da listen på min formside er dynamisk genereret gennem en \"do while not rs.eof --> rs.movenext & loop\" kan jeg ikke referere til den direkte.

Med det du der forslår får jeg denne side:


Feltnavn:
Request object error \'ASP 0102 : 80004005\'
Expecting string input
/ord_disc_indeks_proces.asp, line 9
The function expects a string as input.


Avatar billede cuddles Nybegynder
02. september 2001 - 22:35 #11
Hvordan ser koden ud?
Avatar billede sjoller Nybegynder
02. september 2001 - 22:39 #12
min form side ser sådan her ud:



<!--#Include File=\"inc/inc_odbc_extern.asp\" -->
<%
user_indeks = session(\"user_indeks\")
user_language = \"uk\"

Set RS = Server.CreateObject(\"ADODB.RecordSet\")
    SQL = \"SELECT product.pro_image_thumb, product.pro_indeks, product.pro_name_\"& user_language &\", product.pro_price, product.pro_stock, orders.ord_indeks, orders.ord_quantity FROM product INNER JOIN orders ON product.pro_indeks = orders.ord_product WHERE (product.pro_stock - orders.ord_quantity) < 0 and orders.ord_status = 1 and orders.ord_user = \"& user_indeks &\"\"
    response.write \"strconn: \"& strconn
    response.write \"<br>sql: \"& sql
    RS.Open SQL, strConn
%>
<form name=\"form1\" method=\"post\" action=\"ord_disc_indeks_proces.asp\">
  <table width=\"100%\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">
    <tr align=\"center\">
      <td colspan=\"6\">The following items were ordered in quantities not currently
        available</td>
    </tr>
    <tr>
      <td colspan=\"2\" align=\"center\">Product</td>
      <td align=\"right\">Price</td>
      <td align=\"center\">In stock</td>
      <td colspan=\"2\" align=\"right\">Your order</td>
    </tr>
    <%
    tds = \"CCCCCC\"
   
    do while not rs.eof
   
    if tds = \"CCCCCC\" then
    tds = \"EEEEEE\"
    else
    tds = \"CCCCCC\"
    end if
    %>
    <tr bgcolor=\"<%=tds%>\">
      <td class=\"main2\" colspan=\"6\" height=\"3\" bgcolor=\"#<%=tds%>\"></td>
    </tr>
    <tr>
      <td align=\"center\" bgcolor=\"<%=tds%>\"><img src=\"<%=rs(\"pro_image_thumb\")%>\"></td>
      <td bgcolor=\"<%=tds%>\"><%=rs(\"pro_name_\"& user_language &\"\")%></td>
      <td align=\"right\" bgcolor=\"<%=tds%>\"><%=rs(\"pro_price\")%></td>
      <td align=\"center\" bgcolor=\"<%=tds%>\"><%=rs(\"pro_stock\")%></td>
      <td align=\"right\" bgcolor=\"<%=tds%>\">
        <input type=\"text\" name=\"ord_quantity_<%=rs(\"ord_indeks\")%>\" value=\"<%=rs(\"ord_quantity\")%>\" size=\"3\" maxlength=\"3\">
      </td>
      <td align=\"center\" bgcolor=\"<%=tds%>\" width=\"5\">
      </td>
    </tr>
    <tr>
      <td class=\"main2\" colspan=\"6\" height=\"3\" bgcolor=\"#<%=tds%>\"></td>
    </tr>
    <%
    rs.movenext
    loop
   
    rs.close
    set rs = nothing
    set strconn = nothing
    %>
    <tr>
      <td colspan=\"6\" align=\"right\">
        <input type=\"submit\" name=\"Submit\" value=\"Submit\">
      </td>
    </tr>
  </table>
</form>




Min processide ser sådan her ud:


for each item in request.form

response.write(\"Feltnavn: \" & item & \"<br>\")
response.write(\"V&aelig;rdi: \" & request.form(item) & \"<br><br>\"

next

Avatar billede sjoller Nybegynder
02. september 2001 - 22:40 #13
Den er måske lidt rodet og nogle steder er der nogle response.write\'s jeg har brugt i et forsøg på at finde fejl...
Avatar billede sjoller Nybegynder
02. september 2001 - 23:22 #14
halloooo....
Avatar billede cuddles Nybegynder
03. september 2001 - 09:33 #15
Sorry, var gået i seng i går....
Prøv om det har nogen betydning at bytte rundt på de to linjer med response.write.
Avatar billede cuddles Nybegynder
20. september 2001 - 13:43 #16
Prøv evt. at lave en hidden input for hver værdi og angiv navnet på værdien i value, så vil du få en kommasepareret liste over værdier.
Så hvis du f.eks. laver det til \"poster\", så vil du få en liste, når du laver en request(\"poster\").
Avatar billede sjoller Nybegynder
12. november 2001 - 20:08 #17
Jeg ahr fået noget til at virke... jeg ved ikke om det var takker jeres svar... men her er lidt pts.... tak for hjælkpen...
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