关于以下代码:使用数据[类别] [县] [梅肯]数组的优势是什么,而不仅仅是命名' county'或者县[]和价值' Macon'以及他们如何处理服务器端的表单数据,每个复选框共享相同的值1?另外,为什么每个复选框都有一个具有相同名称但值为0的隐藏输入?
任何有助于理解的帮助都将受到赞赏。
<li>
<div class="input checkbox">
<input type="hidden" name="data[Category][county][Macon]" id="CategoryCountyMacon_" value="0" />
<input type="checkbox" name="data[Category][county][Macon]" value="1" id="CategoryCountyMacon" />
<label for="CategoryCountyMacon">Macon</label>
</div>
</li>
<li>
<div class="input checkbox">
<input type="hidden" name="data[Category][county][Madison]" id="CategoryCountyMadison_" value="0" />
<input type="checkbox" name="data[Category][county][Madison]" value="1" id="CategoryCountyMadison" />
<label for="CategoryCountyMadison">Madison</label>
</div>
</li>
答案 0 :(得分:1)
实际上它在某些框架中很常见。假设Category
是表格或模型,county
是列,Madison
是列的数据,或者是另一个查找表中的相关数据。看起来有点像CakePHP。
假设您有一个表单,用户可以在其中更新具有多个相关表的内容。你如何智能地和可重复地定义哪些数据绑定到哪个表等...框架在接收代码中有逻辑,它将第一级键作为表/模型,然后是列和值。
此外,复选框仅在选中后才会提交,因此如果不是,则不会在$_POST
数组中。在复选框之前定义具有相同名称和值0的隐藏输入以确保存在值,如果未选中则为0,如果选中则为1。它是一种获取提交值并使用它们的方式,而不是检查是否存在某些内容,然后执行其中一项操作。
答案 1 :(得分:1)
我认为你可能有点过分复杂了。
我假设您向用户展示了一组县,并勾选了他们感兴趣的县。
现在要记住的第一件事是,只有选中复选框时,才会将复选框发送回脚本,如果不是您从未在脚本中看到它。发送回脚本的还有value="something"
因此,如果您只对选择了哪些县感兴趣,则可以更容易理解并在脚本中进行处理。此外,我不确定隐藏字段的功能是什么,我猜不到。
<li>
<div class="input checkbox">
<input type="checkbox" name="counties[]" value="Macon" id="CategoryCountyMacon" />
<label for="CategoryCountyMacon">Macon</label>
</div>
</li>
<li>
<div class="input checkbox">
<input type="checkbox" name="counties[]" value="Madison" id="CategoryCountyMadison" />
<label for="CategoryCountyMadison">Madison</label>
</div>
</li>
现在,如果检查Macon
和Madison
,您将在$ _POST数组中返回一个名为counties
的数组,如下所示。
counties[0] = 'Macon'
counties[1] = 'Madison'
因此您可以使用
轻松处理它foreach( $_POST['counties'] as $county ) {
// $county will = 'Macon' on first iteration
// $county will = 'Madison' on second iteration
}
当然,将数据库中的县行的唯一键放入值属性即value="99
而不是名称value="Macon"
可能更好。这取决于您以后想要做什么以及如何设计数据库。