我有一个购物车页面,该页面使用记录集上的重复区域显示特定于网站用户的数据库中的产品。
问题是我有一个“更新”按钮,以便他们可以更改数量;还有一个“删除”按钮,以便他们可以从购物车中删除物品。
无论页面上显示多少产品,唯一更新或删除的产品都是重新编码集中显示的第一个产品。
请参见下面的代码;
<%
While ((Repeat1__numRows <> 0) AND (NOT Recordset1.EOF))
%>
<form action="<%=MM_editAction%>" METHOD="POST" name="form1">
<tr>
<td class="image">
<a href="shop.asp?sku=<%=Recordset1.Fields("sku")%>&sessionx= <%=Recordset1.Fields("sessionx")%>"> <img class="img-fluid" src="<%=(Recordset1.Fields.Item("image").Value)%>" alt=""/></a>
</td>
<td class="description">
<a href="shop.asp?sku=<%=Recordset1.Fields("sku")%>&sessionx=<%=Recordset1.Fields("sessionx")%>"><%=(Recordset1.Fields.Item("name").Value)%></a>
</td>
<td class="price"> £<%=(Recordset1.Fields.Item("totalprice").Value)%></td>
<td class="td-quentety">
<input type="number" value=" <%=(Recordset1.Fields.Item("qty").Value)%>" name="qty">
</td>
<td class=""><a class="button mt-10" href="#" onclick="document.forms['form1'].submit(); return false;">Update</a>
<input type="hidden" name="MM_update" value="form1">
<input type="hidden" name="MM_recordId" value="<%= Recordset1.Fields.Item("idx").Value %>">
</form>
</td>
<form ACTION="<%=MM_editAction%>" METHOD="POST" name="form2">
<td class=""><a class="button mt-10" href="#" onclick="document.forms['form2'].submit(); return false;">Remove</a></td>
</tr>
<input type="hidden" name="MM_delete" value="form2">
<input type="hidden" name="MM_recordId" value="<%= Recordset1.Fields.Item("idx").Value %>">
</form>
<%
Repeat1__index=Repeat1__index+1
Repeat1__numRows=Repeat1__numRows-1
Recordset1.MoveNext()
Wend
%>`
ASP代码
<%
' IIf implementation
Function MM_IIf(condition, ifTrue, ifFalse)
If condition = "" Then
MM_IIf = ifFalse
Else
MM_IIf = ifTrue
End If
End Function
%>
<%
If (CStr(Request("MM_update")) = "form1") Then
If (Not MM_abortEdit) Then
' execute the update
Dim MM_editCmd
Set MM_editCmd = Server.CreateObject ("ADODB.Command")
MM_editCmd.ActiveConnection = MM_Conn01_STRING
MM_editCmd.CommandText = "UPDATE lee2121.Cart SET qty = ? WHERE idx = ?"
MM_editCmd.Prepared = true
MM_editCmd.Parameters.Append MM_editCmd.CreateParameter("param1", 5, 1, -1, MM_IIF(Request.Form("qty"), Request.Form("qty"), null)) ' adDouble
MM_editCmd.Parameters.Append MM_editCmd.CreateParameter("param2", 5, 1, -1, MM_IIF(Request.Form("MM_recordId"), Request.Form("MM_recordId"), null)) ' adDouble
MM_editCmd.Execute
MM_editCmd.ActiveConnection.Close
End If
End If
%>
<%
' *** Delete Record: construct a sql delete statement and execute it
If (CStr(Request("MM_delete")) = "form2" And CStr(Request("MM_recordId")) <> "") Then
If (Not MM_abortEdit) Then
' execute the delete
Set MM_editCmd = Server.CreateObject ("ADODB.Command")
MM_editCmd.ActiveConnection = MM_Conn01_STRING
MM_editCmd.CommandText = "DELETE FROM lee2121.Cart WHERE idx = ?"
MM_editCmd.Parameters.Append MM_editCmd.CreateParameter("param1", 5, 1, -1, Request.Form("MM_recordId")) ' adDouble
MM_editCmd.Execute
MM_editCmd.ActiveConnection.Close
End If
End If
%>