【发布时间】:2011-07-27 00:19:55
【问题描述】:
我正在构建一个可以添加更多字段组的表单,为了处理它们,我在 for 循环中读出了数组
脚本:
<?php
foreach ($_POST as $key => $value) {
$$key = $value;
}
$count = count($name);
for ($i=0; $i<$count; $i++){
?>
<strong><?php echo $name[$i]; ?></strong> (<?php echo $check[$i]; ?>)<br /><?php echo $select[$i]; ?><br /><br />
<?php
}
?>
<form method="post">
<div class="group">
<input type="text" name="name[]" /><br />
<input type="checkbox" name="check[]" value="true" /><br />
<select name="select[]"><option>1</option><option>2</option><option>3</option></select>
</div>
<div class="group">
<input type="text" name="name[]" /><br />
<input type="checkbox" name="check[]" value="true" /><br />
<select name="select[]"><option>1</option><option>2</option><option>3</option></select>
</div>
<div class="group">
<input type="text" name="name[]" /><br />
<input type="checkbox" name="check[]" value="true" /><br />
<select name="select[]"><option>1</option><option>2</option><option>3</option></select>
</div>
<button>Add another group</button>
<input type="submit" />
</form>
如果所有复选框都被选中,则没有问题,但如果仅选中最后一个复选框,则仅计算数组中的一个复选框,然后将 name[0] 与 check[0] 组合,但 check[0] 确实是 check[ 2]。英语不是我的母语,所以我不知道正确的单词。
【问题讨论】:
-
这是因为未选中的复选框未注册。考虑为您的字段命名,例如
name1和check1 -
它们是动态添加和随机排序的,所以我正在寻找另一个解决方案
-
祝你好运。不存在这样的解决方法。您需要使用
name1或name[1]- 或使用复选框以外的其他内容。您也许可以添加一个名为checkValue的隐藏输入(默认设置为 0 或 1,具体取决于复选框状态。然后,当您单击复选框时,也可以更改隐藏字段的值。这样您将始终拥有checkValue项目的数量与您的name项目数量相同