PHP POST返回Array而不是select选项的值?

时间:2014-09-12 17:29:27

标签: php

我正在尝试允许用户选择多个项目,并使用PHP将所选项目发布到下一页。

上面的过程运行正常,但我现在遇到的问题是每个项目都有一个下拉菜单,里面有一些颜色。颜色是一样的。

我需要做的是允许用户为每个选定的项目选择1种颜色并将其发送到下一页。

这应该很简单,但由于某些原因我在下一页得到的只是“数组”而不是所选选项的值!

这是我的代码:

第一页:

    $products_list .= '<div align="center" style="width:150px; height:100px; float:left; border:solid 1px #666; margin-left:20px; margin-bottom:10px;">
    <input style="float:left;" type="checkbox" name="check_list[]" value="'.$id.'" />
    <img width="67" src="../inventory_images/'.$id.'.jpg"  /><br />
    '.$product_name.'<br />
    <select name="colours[]">
    <option >Choose a Colour</option>
    <option value="Black">Black</option>
    <option value="White">White</option>
    <option value="Red">Red</option>
    <option value="Blue">Blue</option>
    </select>
    </div>';


echo $products_list;

在第二页上我有这个:

if(isset($_POST['submit'])){//to run PHP script on submit
if(!empty($_POST['check_list'])){

// Loop to store and display values of individual checked checkbox.
$products_list = "";
foreach($_POST['check_list'] as $selected){

$colours = $_POST['colours'];


//MYSQL QUERIES ETC GOES HERE....

$products_list .= ''.$product_name.' and '.$colours.'';
}

echo $products_list ;

在第二页上,所有选定项目的$product_name正确且正确地回显,但$colours显示数组。

有人可以就此提出建议吗?

由于

编辑:

请注意$_POST['colours'];在第二页上返回Array。

1 个答案:

答案 0 :(得分:1)

要将复选框与选区绑定,您需要对索引编号进行硬编码(本例中为1),因为可能不会选中复选框,因此无法提交。

<input typ="checkbox" name="check_list[1]">
<select name="colours[1]">
<option >Choose a Colour</option>
    <option value="Black">Black</option>
    <option value="White">White</option>
    <option value="Red">Red</option>
    <option value="Blue">Blue</option>
</select>

然后只是:

foreach($_POST['check_list'] as $key => $selected) {
    echo $_POST['colours'][$key]; // use the key from the associated checkbox
}

如果任何选择将是多重选择,那么您将需要执行以下操作:

<select name="colours[1][]" multiple>
<select name="colours[2]">

然后:

foreach($_POST['check_list'] as $key => $selected) {
    echo is_array($_POST['colours'][$key]) ? implode(',', $_POST['colours'][$key]) : $_POST['colours'][$key];
}