两个复选框中的FORM顺序和POST数组一样吗?(Are the order of Checkbox

2019-10-17 12:00发布

我有几个复选框,我试图把它们插入到数据库的一个偷懒的做法。

所以,我想知道,将在POST超级数组中的复选框阵列(复选框[])的顺序的顺序,他们在我的html页面?

如果没有,那么我将只是不要再懒惰的开发!

谢谢你的帮助。

Answer 1:

是的,见17.13.4表格的内容类型的HTML 4规范 。 对于应用程序/ x-WWW窗体-urlencoded :

控制名称/值列在它们出现在文档中的顺序。 名称被从由分离值=和名称/值对通过从彼此分开&

而对于多/表单数据 :

这些部件在相应的控制出现在文档流中的相同的顺序发送至处理剂。

PHP手册状态相同(见我如何在一个HTML创建阵列<form> ):

指定数组的键是HTML的可选项。 如果不指定键名,则数组被填补的元素出现在表单中的顺序。



Answer 2:

虽然从技术上讲,答案是“是”,它仍然依赖于它是如何都被访问,真的(以及如何你偷懒一下吧!)。

例如,如果该复选框未选中,那么它不包含在POST。 这是因为它不是由浏览器发送。 是的,别人还在为了,但你必须考虑出现在您的“懒惰”。

还要记住,如果你使用像表单字段名称做“复选框[1]”,“复选框[2]”等等,那么这些也可能不是在为了你所期望的是,这取决于你如何访问它在PHP。

做一个 “而$ I <$ number_of_known_checkboxes”,然后在看 “$复选框[$ i]” 就可以了。 然而,使用“而$我的<count($复选框)”将失败(如复选框只有选中的复选框填充)和foreach循环也可以提出你的问题。



Answer 3:

有一两件事要警惕的。 无论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。



文章来源: Are the order of Checkboxes in the FORM and the POST array the same?