允许单选按钮只检查一次以 select 其唯一值
Allow radio button to be checked only once to select its unique value
SQL 语句返回了 "n" 行。它工作正常。对于返回的每一行,我希望用户选择一个选项(通过=1,失败=2,NA=3)并在提交时将这些值(1、2、3)插入数据库table。
但是,当我尝试获取用户选择的单选按钮的值以及其他值(如 CategoryID 或 SubcatID)时,我 运行 遇到了问题。
动态的HTML形式是这样的:
Category table
CategoryID Category
------------
01 cat
02 cat 2
03 cat 3
Subcat table
SubcatID Subcat Category_id
-------------------------
1 Jenny 01
2 Emmy 01
3 James 02
4 Hudson 02
5 Mike 03
报告table输出应该是:
ReportID CategoryID SubcatID Scale
------------------------------------------
1 01 1 1
2 01 2 1
3 02 3 2
4 02 4 2
5 03 5 3
也就是说,我每次提交表单的时候,都会有5条记录插入到一个table中。如果我将另一个子类别添加到主类别中,那么将有 6 条记录添加到 table.
目前,报告table显示的是错误的:
ReportID CategoryID SubcatID Scale
------------------------------------------
1 01, 02, 03 1, 2, 3, 4, 5 empty
这是我的ASP代码:
If Request.Form("FormSource") = "SubmitForm" Then
sReportID = Request.Form("ReportID")
sCategoryID = Request.Form("CategoryID")
sSubcatID = Request.Form("SubcatID")
sScale = Request.Form("Scale")
SQL = "SET NOCOUNT ON;" &_
"INSERT INTO Report (ReportID, CategoryID, SubcatID, Scale) VALUES " &_
"('" & SCategoryID & "', '" & SSubcatID & "', '" & SCategoryID & "', '" & SScale & "');" &_
"SELECT @@IDENTITY AS ReportID"
Set objRS = objCon.Execute (SQL)
sReportID = objRS.Fields("ReportID").value
objRS.Close
End If
%>
<form action="" method="post" id="newCategory">
<table>
<tr>
<td>Category and sub</td>
<td>Pass</td>
<td>Fail</td>
<td>NA</td>
</tr>
<%
currCat = ""
sSQL = "SELECT s.*, c.* FROM Category c, Subcat s WHERE s.Subcat_id = c.Subcat_id "
objRS.Open sSQL, objCon
response.Write sSQL
Do Until objRS.EOF
sCategory = objRS("Category")
sSubcat = objRS("Subcat")
if currCat <> sCategory Then
currCat = sCategory
%>
<tr><td><%=sCategory%></td></tr>
<input type="hidden" name="CategoryID" size="40" maxlength="50" value="<%=sCategory%>">
<%
End If
%>
<tr><td><%= sSubcat %></td>
<input type="hidden" name="SubcatID" size="40" maxlength="50" value="<%= sSubcat %>">
<td><input size="20" type="radio" name="<%=sCategory%>" value="1"></td>
<td><input size="20" type="radio" name="<%=sCategory%>" value="2"></td>
<td><input size="20" type="radio" name="<%=sCategory%>" value="3"></td>
</tr>
<%
objRS.MoveNext
Loop
objRS.Close
%>
</table>
<input type="hidden" name="FormSource" value="CatSubmit">
<input type="button" value="Update" onclick="submitForm();">
非常感谢!
我想你想要做的是使用 SubcatID
而不是 CategoryID
来命名你的单选按钮组,因为 subcat 是你的 table 中每一行的唯一性。正如您所发现的,使用 categoryID 会导致多个单选按钮值聚集在一起,并用逗号分隔。
您可以为输入命名,例如 subcatX
,其中 X 是该行的实际 SubcatID。例如:
<input type="radio" name="subcat<%= sSubcat %>" value="1">
当您加载页面以处理表单数据时,您将知道您对哪些 Subcats 感兴趣,并遍历它们以查找与其关联的表单数据是否存在。伪代码看起来像这样:
(for all subcatIDs you care about)
val = Request.Form("subcat" & subcatID)
If val <> "" Then
...
PS。您的单选按钮不需要 size
属性,您的隐藏表单字段不需要 size
或 maxlength
.
其他信息:如何通过遍历 Request.Form
来查找表单字段
这段代码应该可以帮助您准确地发现您回发的内容,以便您可以对其进行分析并获得正确的子目录 ID。如果你这样做,你甚至不需要提前知道你的朋友的名字,因为你可以遍历所有的人并检查他们是否符合你的模式。
<%
Dim i, key, val
For Each i In Request.Form
key = Request.Form.Key(i)
val = Request.Form.Item(i)
Response.Write key & " = " & val & "<br>"
Next
%>
<form action="?" method="post">
<input type="hidden" name="a" value="A" />
<input type="hidden" name="a" value="B" />
<input type="hidden" name="c" value="C" />
<input type="submit" />
</form>
如果你单独运行这个,你会发现输出是
a = A, B
c = C
请注意值 A 和 B 是如何自动合并的运行g,因为它们具有相同的字段名称。你想避免这种情况。
SQL 语句返回了 "n" 行。它工作正常。对于返回的每一行,我希望用户选择一个选项(通过=1,失败=2,NA=3)并在提交时将这些值(1、2、3)插入数据库table。
但是,当我尝试获取用户选择的单选按钮的值以及其他值(如 CategoryID 或 SubcatID)时,我 运行 遇到了问题。
动态的HTML形式是这样的:
Category table
CategoryID Category
------------
01 cat
02 cat 2
03 cat 3
Subcat table
SubcatID Subcat Category_id
-------------------------
1 Jenny 01
2 Emmy 01
3 James 02
4 Hudson 02
5 Mike 03
报告table输出应该是:
ReportID CategoryID SubcatID Scale
------------------------------------------
1 01 1 1
2 01 2 1
3 02 3 2
4 02 4 2
5 03 5 3
也就是说,我每次提交表单的时候,都会有5条记录插入到一个table中。如果我将另一个子类别添加到主类别中,那么将有 6 条记录添加到 table.
目前,报告table显示的是错误的:
ReportID CategoryID SubcatID Scale
------------------------------------------
1 01, 02, 03 1, 2, 3, 4, 5 empty
这是我的ASP代码:
If Request.Form("FormSource") = "SubmitForm" Then
sReportID = Request.Form("ReportID")
sCategoryID = Request.Form("CategoryID")
sSubcatID = Request.Form("SubcatID")
sScale = Request.Form("Scale")
SQL = "SET NOCOUNT ON;" &_
"INSERT INTO Report (ReportID, CategoryID, SubcatID, Scale) VALUES " &_
"('" & SCategoryID & "', '" & SSubcatID & "', '" & SCategoryID & "', '" & SScale & "');" &_
"SELECT @@IDENTITY AS ReportID"
Set objRS = objCon.Execute (SQL)
sReportID = objRS.Fields("ReportID").value
objRS.Close
End If
%>
<form action="" method="post" id="newCategory">
<table>
<tr>
<td>Category and sub</td>
<td>Pass</td>
<td>Fail</td>
<td>NA</td>
</tr>
<%
currCat = ""
sSQL = "SELECT s.*, c.* FROM Category c, Subcat s WHERE s.Subcat_id = c.Subcat_id "
objRS.Open sSQL, objCon
response.Write sSQL
Do Until objRS.EOF
sCategory = objRS("Category")
sSubcat = objRS("Subcat")
if currCat <> sCategory Then
currCat = sCategory
%>
<tr><td><%=sCategory%></td></tr>
<input type="hidden" name="CategoryID" size="40" maxlength="50" value="<%=sCategory%>">
<%
End If
%>
<tr><td><%= sSubcat %></td>
<input type="hidden" name="SubcatID" size="40" maxlength="50" value="<%= sSubcat %>">
<td><input size="20" type="radio" name="<%=sCategory%>" value="1"></td>
<td><input size="20" type="radio" name="<%=sCategory%>" value="2"></td>
<td><input size="20" type="radio" name="<%=sCategory%>" value="3"></td>
</tr>
<%
objRS.MoveNext
Loop
objRS.Close
%>
</table>
<input type="hidden" name="FormSource" value="CatSubmit">
<input type="button" value="Update" onclick="submitForm();">
非常感谢!
我想你想要做的是使用 SubcatID
而不是 CategoryID
来命名你的单选按钮组,因为 subcat 是你的 table 中每一行的唯一性。正如您所发现的,使用 categoryID 会导致多个单选按钮值聚集在一起,并用逗号分隔。
您可以为输入命名,例如 subcatX
,其中 X 是该行的实际 SubcatID。例如:
<input type="radio" name="subcat<%= sSubcat %>" value="1">
当您加载页面以处理表单数据时,您将知道您对哪些 Subcats 感兴趣,并遍历它们以查找与其关联的表单数据是否存在。伪代码看起来像这样:
(for all subcatIDs you care about)
val = Request.Form("subcat" & subcatID)
If val <> "" Then
...
PS。您的单选按钮不需要 size
属性,您的隐藏表单字段不需要 size
或 maxlength
.
其他信息:如何通过遍历 Request.Form
这段代码应该可以帮助您准确地发现您回发的内容,以便您可以对其进行分析并获得正确的子目录 ID。如果你这样做,你甚至不需要提前知道你的朋友的名字,因为你可以遍历所有的人并检查他们是否符合你的模式。
<%
Dim i, key, val
For Each i In Request.Form
key = Request.Form.Key(i)
val = Request.Form.Item(i)
Response.Write key & " = " & val & "<br>"
Next
%>
<form action="?" method="post">
<input type="hidden" name="a" value="A" />
<input type="hidden" name="a" value="B" />
<input type="hidden" name="c" value="C" />
<input type="submit" />
</form>
如果你单独运行这个,你会发现输出是
a = A, B
c = C
请注意值 A 和 B 是如何自动合并的运行g,因为它们具有相同的字段名称。你想避免这种情况。