我需要使用单个提交(保存)按钮创建多个表单。
<?php for ($i = 0; $i < count($c); $i++): ?>
<div>
<input type="radio" name="gender[<?php echo $i ?>]" id="gender_<?php echo $i ?>_male" value="male" />
<label for="gender_<?php echo $i ?>_male">Male</label>
<input type="radio" name="gender[<?php echo $i ?>]" id="gender_<?php echo $i ?>_female" value="female" />
<label for="gender_<?php echo $i ?>_female">Female</label>
</div>
<div>
<div><label for="Name_<?php echo $i ?>">Name:</label></div>
<div><input type="text" name="Name[]" id="Name_<?php echo $i ?>" /></div>
</div>
<?php endfor ?>
我必须name the radio buttons作为性别[0] ...性别[1],以便这些群组具有唯一的名称。 但我已将Name命名为Name []。
我的问题是,我是否将Name []命名为Name [0] ...而是命名[1]以使流量恒定? 我的意思是,可以 $ _POST ['姓名'] [0]曾被映射到性别[1]?
答案 0 :(得分:2)
浏览器将始终以相同的顺序提交字段。这是the HTML specification:
所必需的循环:对于控件中的每个元素字段,按树顺序,运行以下子步骤:
因此,除非您开始禁用字段,否则您将不会遇到问题。
明确可能会让你的代码更容易阅读。
答案 1 :(得分:0)
浏览器TEND按照他们在html中列出的相同顺序提交字段,但据我所知,没有必要这样做。所以,如果你有
<input name="foo[]" ...> ... should become $_POST['foo'][0]
<input name="foo[]" ...> ... should become $_POST['foo'][1]
<input name="foo[]" ...> ... should become $_POST['foo'][2]
但由于没有要求,你可能会以其他顺序获得这些字段。如果您正在使用[]
命名黑客,并且执行必须相互关联的多个字段,那么最好明确列出索引,以确保维护字段关联,例如
<input name="firstname[0]"> <input name="lastname[0]">
<input name="firstname[1]"> <input name="lastname[1]">
etc...
如果不这样做,您的用户名可以输入John Doe
和Jane Smith
,但会在服务器上接收John Smith
和Jane Doe
。不太可能,但......比抱歉更安全。