我有两个独立的组合框:
<form id = "query" method = "post" action = "search.php">
<input type = "checkbox" name = "col_list[]" value = "cheese">cheese</input>
<input type = "checkbox" name = "col_list[]" value = "tomatoes">tomatoes</input>
<input type = "checkbox" name = "col_order[]" value = "italian">italian</input>
<input type = "checkbox" name = "col_order[]" value = "wheat">wheat</input>
<input id = "submit" name = "submit" type = "submit" value = "submit" display = "inline></input>
</form>
这些组框将根据从其上方的下拉菜单中选择的值(在javascript中完成)而更改。例如,如果选择了三明治的值,则会显示这两个组框,但是,如果选择了比萨饼的值,则会有一个具有各种浇头的组合框和另一个具有硬皮类型的组合框。 我可以根据需要发布该代码
在我的PHP代码中,我有:
$columns = $_POST["col_list"];
$order = $_POST["col_order"];
我尝试打印两个阵列,但我总是遇到一个需要永远加载的屏幕,然后是我的错误&#34;发现两个数组都为空的消息(我只是使用了空(var)方法)
如果我选择任意数量的顶盒,但单独的组上没有盒子,那么我的代码就可以了,我拥有第一组的所有选定值。但是,如果我复合到那个并从第二组中选择任何数量,问题随之而来
我不知道他们为什么会空虚。有什么想法吗?
答案 0 :(得分:-1)
编辑: PHP中允许使用重复的名称字段。感谢Quentin指出这一点。
输入标记的name字段用作POST和GET查询的键。您需要完全匹配它们,例如:
$columns = $_POST["col_list[]"];
$order = $_POST["col_order[]"];
除非有一些疯狂的数组语法没有人告诉我...
此外,我不会为多个字段使用相同的名称字段值,因为它必须选择其中一个字段才能发送,您可能不喜欢它发送给您的字段。相反,尝试在调用表单的提交方法时禁用/删除组件,或者只是为所有输入字段分配唯一的名称。
答案 1 :(得分:-1)
使用相同的名称参数命名两个复选框是一个错误...可能如果一个col_list数组有一些元素,另一个是空的......所以$ _POST将返回一个空数组。 尝试使用不同的名称命名您的复选框并更改您的javascript
试试这个:
if (is_array($_POST['col_list'])) {
foreach($_POST['col_list'] as $result) {
...
}
}