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


PHP POST returns Array instead of the value of select options?

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

上面的过程很好,但我现在的问题是每个项目都有一个下拉菜单,里面有一些颜色。颜色是一样的。

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

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

这是我的代码:

首页:

    $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 ;

在第二页上,所有所选项目的CCD_ 1都得到了正确的回声,但CCD_。

有人能就此提供建议吗?

感谢

编辑:

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

要将复选框与选择绑定,您需要硬编码索引号(本例中为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];
}