2012-09-10 30 views
0

我需要檢索產品信息。從數據庫,現在想編輯一些數據並將其保存回數據庫。我創建了「編輯表單」頁面並將值傳遞給另一個「保存」頁面。我想要的只是保存已編輯的記錄,但是當我點擊「保存」按鈕時,所有記錄的數據都通過了。我感到困惑的是與相同的傳遞方法,我可以成功刪除只有特定的記錄。如何僅保存從數據庫檢索到的已編輯數據?我很困惑。我可以刪除特定記錄但不能保存特定記錄

這裏是我的代碼..

<table cellpadding="0" cellspacing="0" border="1" width="100%"> 
    <tr class="border bluebackend" > 
     <td class="center bold" width="30">Size</td> 
     <td class="center bold" width="30">Color</td> 
     <td class="center bold" width="27%">Est. Qty (dz.)</td> 
     <td class="center bold" width="30">&nbsp;</td> 
     <td class="center bold" width="30">&nbsp;</td> 
    </tr> 
<% 
dim total_qty_est, total_qty 
if rsPdtn_sizeColor.eof then 
response.Write "<tr><td colspan=""3"">file not found</td></tr>" 
Else      
Do while Not rsPdtn_sizeColor.EOF 

total_qty_est = rsPdtn_sizeColor.fields.item("pdtn_st_qty_est") 
total_qty = total_qty + total_qty_est  

%>            
    <tr > 
     <td class="center"> 
      <select name="pdtn_st_size"> 
       <option selected>-- size -- </option> 
       <option value="L" <%=checkSelectedScript(rsPdtn_sizeColor.fields.item("pdtn_st_size"),"L")%>>L</option> 
       <option value="XL" <%=checkSelectedScript(rsPdtn_sizeColor.fields.item("pdtn_st_size"),"XL")%>>XL</option> 

      </select>                  
     </td> 
     <td class="center"> 
      <select name="pdtn_st_color"> 
       <option selected>-- color -- </option> 
       <option value="Orange" <%=checkSelectedScript(rsPdtn_sizeColor.fields.item("pdtn_st_color"),"Orange")%>>Orange</option> 
       <option value="Pink" <%=checkSelectedScript(rsPdtn_sizeColor.fields.item("pdtn_st_color"),"Pink")%>>Pink</option>  
      </select>                   
     </td> 
     <td class="center"> 
      <input type="text" value="<%=PcsToDz(rsPdtn_sizeColor.fields.item("pdtn_st_qty_est"))%>" name="pdtn_st_qty_est" size="3"> 
      &nbsp;&nbsp;(<%=rsPdtn_sizeColor.fields.item("pdtn_st_qty_est")%>) 
     </td> 
     <td><input type="button" name="" value="Del" onClick="confirmationDeletePrice('../engine/delPdtn_szCl.asp?pdtn_szcl_id= <%=rsPdtn_sizeColor.fields.item("pdtn_szcl_id")%>&pdtn_st_id=<%=rsPdtn_sizeColor.fields.item("tbl_pdtn_sizecolor.pdtn_st_id")%>')"></td>  
     <td class="center" > 
     <input type="button" name="" value="Save" onClick="confirmationSaveProduction_Szcl('production_szcl_edit_action.asp?pdtn_szcl_id= <%=rsPdtn_sizeColor.fields.item("pdtn_szcl_id")%>')"> 

     <input type="hidden" value="Y" name="edit_pdtn_szcl"> 
      <input type="hidden" value="<%=rsPdtn_sizeColor.fields.item("pdtn_szcl_id")%>" name="pdtn_szcl_id">                  
     </td>                
    </tr> 
<% 
rsPdtn_sizeColor.movenext 

Loop  
rsPdtn_sizeColor.movefirst 
end if 
%>  

,這是我保存的頁面代碼...

<% 
    pdtn_st_id = Request.form("pdtn_st_id") 
    pdtn_st_qty_est_dz = Request.form("pdtn_st_qty_est") 

     if pdtn_st_qty_est_dz <> "" then 
      pdtn_st_qty_est = DztoPcs(pdtn_st_qty_est_dz) 
     end if 

    pdtn_st_size = Request.form("pdtn_st_size") 
    pdtn_st_color = Request.form("pdtn_st_color") 
    edit_pdtn_szcl = Request.form("edit_pdtn_szcl") 

    call checkBlank(pdtn_st_qty_est) 

    if SomethingError <> "yes" then 

     Call DBConnOpen() 

      Set Rs = Server.CreateObject("ADODB.Recordset") 
      Set Rs.ActiveConnection = Conn 

      strSQL = "SELECT * FROM tbl_pdtn_sizecolor" 
       pdtn_szcl_id = Request.form("pdtn_szcl_id") 
       strSQL = strSQL & " WHERE pdtn_szcl_id =" & pdtn_szcl_id & "" 
       Rs.Open strSQL, Conn, 1, 3   

      Rs.Fields("pdtn_st_id") = pdtn_st_id 
      Rs.Fields("pdtn_st_qty_est") = pdtn_st_qty_est 
      Rs.Fields("pdtn_st_size") = pdtn_st_size  
      Rs.Fields("pdtn_st_color") = pdtn_st_color 

      Rs.Update 
      Rs.Close 

      response.redirect "production_view.asp?pdtn_st_id=" & pdtn_st_id 

     Call DBConnClose() 

    else 
     call writeInputError 
    end if 
%>  
+0

如果只顯示一個列。這隻會工作,否則,因爲每行都有相同的字段名稱,所有行的值將被合併到一個值中。快速(但不推薦)的解決方案是在每個表格行周圍包裝FORM開始和結束標籤。但更好的解決方案將取決於您是否希望能夠一次編輯一行或一次編輯所有行? – johna

+0

@John,我想一次添加一個。那麼你能否建議我在這種情況下應該怎麼做?謝謝。 – Alxan

回答

1

最簡單的解決方案是將現有的標籤移到錶行圍繞在循環。這樣,您將能夠一次編輯一行,而無需修改保存頁面代碼。

我已經加入表單標籤下面的代碼,但你需要使用表單標籤,你已經在使用:具有多個行

<table cellpadding="0" cellspacing="0" border="1" width="100%"> 
    <tr class="border bluebackend" > 
     <td class="center bold" width="30">Size</td> 
     <td class="center bold" width="30">Color</td> 
     <td class="center bold" width="27%">Est. Qty (dz.)</td> 
     <td class="center bold" width="30">&nbsp;</td> 
     <td class="center bold" width="30">&nbsp;</td> 
    </tr> 
<% 
dim total_qty_est, total_qty 
if rsPdtn_sizeColor.eof then 
response.Write "<tr><td colspan=""3"">file not found</td></tr>" 
Else      
Do while Not rsPdtn_sizeColor.EOF 

total_qty_est = rsPdtn_sizeColor.fields.item("pdtn_st_qty_est") 
total_qty = total_qty + total_qty_est  

%> 
    <form action="" method=""><!--move your form open tag here-->          
    <tr > 
     <td class="center"> 
      <select name="pdtn_st_size"> 
       <option selected>-- size -- </option> 
       <option value="L" <%=checkSelectedScript(rsPdtn_sizeColor.fields.item("pdtn_st_size"),"L")%>>L</option> 
       <option value="XL" <%=checkSelectedScript(rsPdtn_sizeColor.fields.item("pdtn_st_size"),"XL")%>>XL</option> 

      </select>                  
     </td> 
     <td class="center"> 
      <select name="pdtn_st_color"> 
       <option selected>-- color -- </option> 
       <option value="Orange" <%=checkSelectedScript(rsPdtn_sizeColor.fields.item("pdtn_st_color"),"Orange")%>>Orange</option> 
       <option value="Pink" <%=checkSelectedScript(rsPdtn_sizeColor.fields.item("pdtn_st_color"),"Pink")%>>Pink</option> 
      </select>                   
     </td> 
     <td class="center"> 
      <input type="text" value="<%=PcsToDz(rsPdtn_sizeColor.fields.item("pdtn_st_qty_est"))%>" name="pdtn_st_qty_est" size="3"> 
      &nbsp;&nbsp;(<%=rsPdtn_sizeColor.fields.item("pdtn_st_qty_est")%>) 
     </td> 
     <td><input type="button" name="" value="Del" onClick="confirmationDeletePrice('../engine/delPdtn_szCl.asp?pdtn_szcl_id= <%=rsPdtn_sizeColor.fields.item("pdtn_szcl_id")%>&pdtn_st_id=<%=rsPdtn_sizeColor.fields.item("tbl_pdtn_sizecolor.pdtn_st_id")%>')"></td>  
     <td class="center" > 
     <input type="button" name="" value="Save" onClick="confirmationSaveProduction_Szcl('production_szcl_edit_action.asp?pdtn_szcl_id= <%=rsPdtn_sizeColor.fields.item("pdtn_szcl_id")%>')"> 

     <input type="hidden" value="Y" name="edit_pdtn_szcl"> 
      <input type="hidden" value="<%=rsPdtn_sizeColor.fields.item("pdtn_szcl_id")%>" name="pdtn_szcl_id">                  
     </td>                
    </tr> 
    </form><!--move your form close tag here--> 
<% 
rsPdtn_sizeColor.movenext 

Loop  
rsPdtn_sizeColor.movefirst 
end if 
%>  
+0

非常感謝你。我認爲這個長碼,沒有人會打擾閱讀,我不會得到答案。但你做到了!真的非常感謝你的好意。 – Alxan

相關問題