0

私は製品の非常にシンプルなフォームを持っています。各製品には、次のようなデータの配列を繰り返し作成するチェックボックスと数量フィールドがあります。

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

出力結果は、たとえば次のようになります。Products: product 1, product 2 - 10, 2

しかし、私が達成しようとしているのは、次の出力です: 製品: 製品 1 - x 10、製品 2 - x 2

基本的に私が理解しようとしているのは、データを取得した後、php スクリプトで各製品のデータを分割およびグループ化する方法です。

よろしくお願いいたします。

4

2 に答える 2

3
  1. それは完全にphpに見えません。
  2. 両方のリストを一緒に反復処理するだけです。

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

これは一般的な考え方ですが、コメントで述べたように、これを単独で行うことは本当の解決策ではありません。

注意事項:

  1. チェックボックスがチェックされていない場合、チェックボックスは値を渡さないため、取得する $product 配列は同じサイズにはなりませんし、希望どおりに $quantity 配列を使用してキー値を並べることもできません。(チェックボックスに別の名前を付けてみてください。つまり、product[1])。- ありがとう tmuguet
  2. チェックボックスがどれもチェックされていない場合、配列は取得されないため、配列を foreach に渡すと、前述のエラーが生成されます。
于 2013-01-10T00:59:40.823 に答える
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);
?>
于 2013-01-10T01:10:03.090 に答える