我有几个复选框,我试图把它们插入到数据库的一个偷懒的做法。
所以,我想知道,将在POST超级数组中的复选框阵列(复选框[])的顺序的顺序,他们在我的html页面?
如果没有,那么我将只是不要再懒惰的开发!
谢谢你的帮助。
我有几个复选框,我试图把它们插入到数据库的一个偷懒的做法。
所以,我想知道,将在POST超级数组中的复选框阵列(复选框[])的顺序的顺序,他们在我的html页面?
如果没有,那么我将只是不要再懒惰的开发!
谢谢你的帮助。
是的,见17.13.4表格的内容类型的HTML 4规范 。 对于应用程序/ x-WWW窗体-urlencoded :
控制名称/值列在它们出现在文档中的顺序。 名称被从由分离值
=
和名称/值对通过从彼此分开&
。
而对于多/表单数据 :
这些部件在相应的控制出现在文档流中的相同的顺序发送至处理剂。
PHP手册状态相同(见我如何在一个HTML创建阵列<form>
):
指定数组的键是HTML的可选项。 如果不指定键名,则数组被填补的元素出现在表单中的顺序。
虽然从技术上讲,答案是“是”,它仍然依赖于它是如何都被访问,真的(以及如何你偷懒一下吧!)。
例如,如果该复选框未选中,那么它不包含在POST。 这是因为它不是由浏览器发送。 是的,别人还在为了,但你必须考虑出现在您的“懒惰”。
还要记住,如果你使用像表单字段名称做“复选框[1]”,“复选框[2]”等等,那么这些也可能不是在为了你所期望的是,这取决于你如何访问它在PHP。
做一个 “而$ I <$ number_of_known_checkboxes”,然后在看 “$复选框[$ i]” 就可以了。 然而,使用“而$我的<count($复选框)”将失败(如复选框只有选中的复选框填充)和foreach循环也可以提出你的问题。
有一两件事要警惕的。 无论HTML 4规格可能会说,他们是在它们出现在DOM的顺序提交。
看看这个(无效)HTML。
<html>
<head>
<title>Test Page</title>
</head>
<body>
<form name="f1" method="get" action="fostered.htm">
<label>A <input type="checkbox" name="a" checked="checked" /></label>
<table>
<tbody>
<tr>
<td>
<label>B <input type="checkbox" name="b" checked="checked" /></label>
</td>
</tr>
<tr>
<label>C <input type="checkbox" name="c" checked="checked" /></label>
</tr>
</tbody>
</table>
<input type="submit" />
</form>
</body>
</html>
在这种情况下,在提交的顺序是A,C,B,因为在分析过程中,将C复选框“福斯特父”,因为它不是一个表格单元格内是表的开始之前。
当然,这通常出现在呈现的页面上,但CSS可以掩盖。
另一个很好的理由来不厌其烦地验证你的HTML。
另外值得一提的是“隐藏”的输入字段不是方式,鼓励父,所以如果C一直隐藏字段,在提交订单将是A,B,C。