2017-05-09 24 views
1

私はループ内にフォーム要素を持ち、そのうちの1つは複数の選択オプションを持つ選択ボックスです。 ここにコードがあります。フォームで選択ボックス配列の複数のオプションを取得する方法

<?php for($i = 1; $i <= 2; $i++){ ?> 
<input type="text" name="product[]" /> 
<select name="problems[]" 
    <option value="problem1">Problem 1</option> 
    <option value="problem2">Problem 2</option> 
    <option value="problem3">Problem 3</option> 
</select> 
<?php } ?> 

私は、「テレビ」、すなわちproblem1とproblem2と他の製品の冷蔵庫のためのすべての3のオプションを製品の2オプションを選択した製品「テレビ」と入力します。 私は帳票印刷後のデータを送信すると、私はここ配列

Array 
(
    [product] => Array 
     (
      [0] => TV 
      [1] => Fridge 
     ) 

    [problems] => Array 
     (
      [0] => problem1 
      [1] => problem2 
      [2] => problem1 
      [3] => problem1 
      [4] => problem3 
     ) 
) 

でデータを取得し、私はその製品のである問題が確認されませんでした。 何私がしたいことは、この

Array 
(
    [product] => Array 
     (
      [0] => TV 
      [1] => Fridge 
     ) 

    [problems] => Array 
     (
      [0] => Array 
       (
        [0] => problem1 
        [1] => problem2 
       ) 
      [1] => Array 
       (
        [0] => problem1 
        [1] => problem2 
        [2] => problem3 
       ) 
     ) 
) 

のようなものである、このように配列を取得する方法はありますか? あなたのご協力をよろしくお願い申し上げます。

+0

ようmultipleキーワードを使うのか? (あなたが現在持っているもの) –

答えて

1

あなたが入力にカウンタ変数$iを利用すると要素を選択する必要があり、加えて、あなたはより多くの変更のカップルを確認する必要があります。次のようにコードをリファクタリング、

<?php for($i = 0; $i <= 1; $i++){ ?> 
    <input type="text" name="product[<?php echo $i; ?>]" /> 
    <select name="problems[<?php echo $i; ?>][]" multiple> 
     <option value="problem1">Problem 1</option> 
     <option value="problem2">Problem 2</option> 
     <option value="problem3">Problem 3</option> 
    </select> 
<?php } ?> 

追記:あなたは完全な配列構造を確認したい場合場合は、var_dump($_POST);

0

どういうことですか?

<?php for($i = 1; $i <= 2; $i++){ ?> 
<input type="text" name="product_<?php echo $i; ?>[]" /> 
<select name="problems_<?php echo $i; ?>[]" 
    <option value="problem1">Problem 1</option> 
    <option value="problem2">Problem 2</option> 
    <option value="problem3">Problem 3</option> 
</select> 
<?php } ?> 
0

はちょうどこの<select name="problems[<?php echo $i;?>][]">

0
のようにあなたの問題のフィールドに名前を付けます

コードを修正してください

<?php for($i = 1; $i <= 2; $i++){ ?> 
<input type="text" name="product[<?php echo $i; ?>]" /> 
<select name="problems[<?php echo $i; ?>][]" multiple> 
    <option value="problem1">Problem 1</option> 
    <option value="problem2">Problem 2</option> 
    <option value="problem3">Problem 3</option> 
</select> 
<?php } ?> 

また、あなたがタグを閉じるにエラーI-E <select name="problems[]"を持っているが、終了タグ記号とそれを閉じて、あなたが最初の配列を出力コードを共有することができ<select name="problems[<?php echo $i; ?>][]" multiple>

関連する問題