2014-09-12 79 views
0

我想讓用戶選擇多個項目並使用PHP將選定的項目發佈到下一頁。PHP POST返回數組而不是選擇選項的值?

上述過程正常,但我現在的問題是每個項目都有一個下拉菜單,其中包含一些顏色。顏色是一樣的。

我需要做的是讓用戶爲每個選定的項目選擇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'];是第二頁上返回數組。

+0

name =「colors []」這是數組使用name =「colors」而不是 – bksi 2014-09-12 17:31:29

+0

2014-09-12 17:33:13

+0

我希望我可以降低這些評論。而OP,顏色是陣列中的顏色。做一個$ color的print_r,你會看到他們選擇的東西。您需要遍歷數組以獲取顏色。 [Foreach](http://www.php.net/foreach) – 2014-09-12 17:33:46

回答

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]; 
} 
相關問題