2013-01-10 80 views
0

我有一個非常簡單的產品表單。每個產品都有,即重複創建數據的數組像這樣的複選框並數量字段:如何在php表單中將多個表單輸入分組發送

<form action="process.php" method="post"> 
<input type="checkbox" name="product[]" value="product 1" /> 
<input type="text" name="quantity[]" /> 

<input type="checkbox" name="product[]" value="product 2" /> 
<input type="text" name="quantity[]" /> 

<input type="submit" /> 
</form> 

然後我處理這種形式在PHP方式如下:

//php script to retrieve data 
$product = isset($_POST['product']) ? implode(', ', $_POST['product']) : 'Not selected'; 
$quantity = isset($_POST['quantity']) ? implode(', ', $_POST['quantity']) : 'Not mentioned'; 

$messageToSend = <<<END 

Products: $product - $quantity 

END; 

和輸出結果是例如:產品:產品1,產品2 - 10,2

但我想實現的是以下的輸出: 產品:產品1 - ×10,產品2 - x 2

基本上我想弄清楚的是在檢索數據後如何在php腳本中爲每個產品分割和分組數據。

非常感謝您的幫助。

回答

3
  1. 這看起來不完全是PHP。
  2. 你只需要通過這兩個列表迭代在一起:

    foreach ($quantity as $key => $quant) { 
        echo $product[$key].' - x'.$quant; 
    } 
    

這是一般的想法,但在評論中提到的,這樣做本身並沒有真正解決。

有些事情要記住:

  1. 複選框不會傳遞一個值,如果他們不檢查,所以$產品陣列,你得到的將不會是大小相同的,也沒有對鍵值排隊根據需要使用$ quantity數組。 (嘗試以不同的方式命名您的複選框,即產品[1])。 - 謝謝tmuguet
  2. 如果沒有複選框被選中,你不會得到一個數組,因此將它傳遞給foreach會產生你提到的錯誤。
+3

爲複選框被傳遞到PHP,只有當他們被檢查時,不能只依靠指標/鍵... – tmuguet

+0

@jormundir謝謝你,但在案例我不斷收到以下錯誤:爲foreach提供的無效參數() 您如何看待它可能是什麼? – devjs11

+0

你認爲你可以爲此提供一個工作解決方案嗎? – devjs11

0

試試這個:

<?php 
foreach($_POST['product'] as $key => $product){ 
    $quantity = isset($_POST['quantity'][$key])? $_POST['quantity'][$key]:'Not selected'; 
    $message[] = $product.' - x'.$quantity; 
} 
echo implode(',', $message); 
?>