Alxan
Alxan

Reputation: 397

how to save entire recordset that was checked on checkboxes

I have a form for tracking work progress of each staff. Since one staff can do many tasks at a day. Therefore to save working time, I created checkboxes for task so that i can select and save as multi-records at a time. My code is as below

<td colspan="2">
        <%
          if rsPdtn_sizeColor.eof then 
             call displayNotFoundRecord
          Else
             Do Until  rsPdtn_sizeColor.Eof
        %>             
    <div style="width:120px; float:left"><input type="checkbox" name="pdtn_szcl_id" value="<%=rsPdtn_sizeColor.fields.item("pdtn_szcl_id")%>">&nbsp;<%=rsPdtn_sizeColor.fields.item("pdtn_st_size")%> &nbsp;&nbsp;<%=rsPdtn_sizeColor.fields.item("pdtn_st_color")%></div>
    <div style="width:50px; float:left"><input type="text" name="pdtn_qty" value="<%=rsPdtn_sizeColor.fields.item("pdtn_st_qty_est")%>" size="7"></div>
    </div>
    <div style="clear:both"></div>
        <%                                                                  
             rsPdtn_sizeColor.movenext
             Loop
           End if                   

        rsPdtn_sizeColor.movefirst                              
        %>

</td>
<td><input name="pdtn_note" value="<%=pdtn_note%>" size="39"></td>

However, with this code, only field "pdtn_szcl_id" that can pass only recordset that i checked. I want "pdtn_qty" to do the same as well. So could you please help me on this. Thank you

Upvotes: 0

Views: 126

Answers (1)

johna
johna

Reputation: 10772

The problem is that you should not have form elements like input with duplicate names. There are a couple of possible solutions but this is probably the safest.

In your code add the database id to the name of the checkbox and qty textbox, something like this:

<div style="width:120px; float:left"><input type="checkbox" name="pdtn_szcl_id_<%=rsPdtn_sizeColor.fields.item("pdtn_szcl_id")%>">&nbsp;<%=rsPdtn_sizeColor.fields.item("pdtn_st_size")%> &nbsp;&nbsp;<%=rsPdtn_sizeColor.fields.item("pdtn_st_color")%></div> 
<div style="width:50px; float:left"><input type="text" name="pdtn_qty_<%=rsPdtn_sizeColor.fields.item("pdtn_szcl_id")%>" value="<%=rsPdtn_sizeColor.fields.item("pdtn_st_qty_est")%>" size="7"></div> 

Then when you want to retrieve the values you will need to open your recordset again and loop through the rows checking if the checkbox has been checked and getting the value, something like this:

<%
'Open your rsPdtn_sizeColor recordset again
Do Until rsPdtn_sizeColor.Eof
    If Request.Form("pdtn_szcl_id_" & rsPdtn_sizeColor.fields.item("pdtn_szcl_id")) = "on" Then
         'This checkbox was checked
         id = rsPdtn_sizeColor.fields.item("pdtn_szcl_id")
         qty = Request.Form("pdtn_qty_" & rsPdtn_sizeColor.fields.item("pdtn_szcl_id"))
         'This gives you the ID and Qty entered for each row
    End If
    rsPdtn_sizeColor.movenext
Loop
%>

NB. I used Request.Form but if you use form method GET then you should change to Request.QueryString.

Upvotes: 1

Related Questions