2017-12-15 12 views
-1

私は説明する方法がわからないという問題がありますが、私はベストを尽くします。HTML、PHPマルチ複数のフィールドを1つの配列で選択する問題

私は必要に応じて動的に追加することができます選択フィールドフォームがあります。ユーザーが

Person 2: Select Allergies 
      1.Nut 
      2.Gluten 
      3.Meat 

に底に別の人を追加するには、+ボタンを押すと、この時点で

Person 1: Select your allergies 
      1.Nut 
      2.Gluten 
      3.No meat.... 

が私のHTML

<select name="s_allergies[]" class="form-control" multiple> 

      <option value="none" selected>None</option> 
      <option value="Gluten">Gluten Allergy</option> 
      <option value="Nut">Nut Allergy</option> 
      <option value="Shellfish">Shellfish Allergy</option> 
      <option value="Lactose">Lactose Allergy</option> 
      <option value="Egg">Egg Allergy</option> 
      <option value="Vegetarian">Vegetarian</option> 
      <option value="Vegetarian with Seafood">Vegetarian/Seafood</option> 
      <option value="No Pork">No Pork</option> 
      <option value="No Red Meat">No Red Meat</option> 

</select> 

である私は(フォームを処理するために、このコードを以下のよ他のすべてのフィールドで機能します)。何らかの理由で、マルチセレクトフィールドは、2つ以上が選択されていても1つの値しか出力しません。

if(!empty($_POST['s_fname'])){ //checks if an additional attendee has been added 

    $s_fname = $_POST['s_fname']; 
    $s_lname = $_POST['s_lname']; 
    $s_title = $_POST['s_title']; 
    $s_type = $_POST['s_type']; 
    $s_celebration = $_POST['s_celebration']; 
    $s_allergies = $_POST['s_allergies']; 

    for($i = 0; $i < count($s_fname); $i++){ 

     if(!empty($s_fname[$i])){ 

      $sfname = escape($s_fname[$i]); 
      $slname = escape($s_lname[$i]); 
      $stitle = escape($s_title[$i]); 
      $stype = escape($s_type[$i]); 
      $scelebration = escape($s_celebration[$i]); 
      $sallergies = escape(implode(",", $s_allergies[$i])); 

      //query to insert to attendee database 
      echo "$sfname $slname $stitle $stype $scelebration $sallergies"; 

     } 
    } 
} 

EDIT:それは1列にすべてを入れているようだ。これは私が得るものです、 は変数をダンプ: はここに画像enter image description here EDIT2ですか?最初のフィールドでは、グルテンとナッツを選びました。第二の人は、貝とラクトースを選びました。

Array 
(
    [0] => Gluten 
    [1] => Nut 
    [2] => Shellfish 
    [3] => Lactose 
) 
+0

データの受信方法を確認するために$ _POSTをダンプしようとしましたか? –

+0

'アレイ ( [0] =>グルテン [1] =>ナット [2] =>貝 [3] =>ラクトース )'これは(ますprint_rとダンプされる内容である) – user1986245

+0

問題は、あります'' s_allergies''は '' s_allergies [] ''、 '' s_allergies [2] [] 'などの名前に変更する必要があります。など –

答えて

0

私はあなたが

0

あなたは何かを持っている必要がありますあなたはそれとは別の名前を与える必要があり、複数の選択ボックスを使用している場合select

<?php 

//check other values here 
foreach ($_POST['s_allergies'] as $alg){ 
//your poerations here 
} 
?> 

と同じ任意のインデックス名を参照してくださいいけませんlike:

<select name="s_allergies[1][]" class="form-control" multiple> 
      <option value="none" selected>None</option> 
      <option value="Gluten">Gluten Allergy</option> 
      <option value="Nut">Nut Allergy</option> 
      <option value="Shellfish">Shellfish Allergy</option> 
      <option value="Lactose">Lactose Allergy</option> 
      <option value="Egg">Egg Allergy</option> 
      <option value="Vegetarian">Vegetarian</option> 
      <option value="Vegetarian with Seafood">Vegetarian/Seafood</option> 
      <option value="No Pork">No Pork</option> 
      <option value="No Red Meat">No Red Meat</option> 
</select> 
<select name="s_allergies[2][]" class="form-control" multiple> 
      <option value="none" selected>None</option> 
      <option value="Gluten">Gluten Allergy</option> 
      <option value="Nut">Nut Allergy</option> 
      <option value="Shellfish">Shellfish Allergy</option> 
      <option value="Lactose">Lactose Allergy</option> 
      <option value="Egg">Egg Allergy</option> 
      <option value="Vegetarian">Vegetarian</option> 
      <option value="Vegetarian with Seafood">Vegetarian/Seafood</option> 
      <option value="No Pork">No Pork</option> 
      <option value="No Red Meat">No Red Meat</option> 
</select> 
<select name="s_allergies[3][]" class="form-control" multiple> 
      <option value="none" selected>None</option> 
      <option value="Gluten">Gluten Allergy</option> 
      <option value="Nut">Nut Allergy</option> 
      <option value="Shellfish">Shellfish Allergy</option> 
      <option value="Lactose">Lactose Allergy</option> 
      <option value="Egg">Egg Allergy</option> 
      <option value="Vegetarian">Vegetarian</option> 
      <option value="Vegetarian with Seafood">Vegetarian/Seafood</option> 
      <option value="No Pork">No Pork</option> 
      <option value="No Red Meat">No Red Meat</option> 
</select> 
<select name="s_allergies[4][]" class="form-control" multiple> 
      <option value="none" selected>None</option> 
      <option value="Gluten">Gluten Allergy</option> 
      <option value="Nut">Nut Allergy</option> 
      <option value="Shellfish">Shellfish Allergy</option> 
      <option value="Lactose">Lactose Allergy</option> 
      <option value="Egg">Egg Allergy</option> 
      <option value="Vegetarian">Vegetarian</option> 
      <option value="Vegetarian with Seafood">Vegetarian/Seafood</option> 
      <option value="No Pork">No Pork</option> 
      <option value="No Red Meat">No Red Meat</option> 
</select> 

を入力してから、複数のselectを配列としてアクセスできます。出力は次のようになります

's_allergies' => 
array (size=4) 
    1 => 
    array (size=3) 
     0 => string 'Gluten' (length=6) 
     1 => string 'Nut' (length=3) 
     2 => string 'Shellfish' (length=9) 
    2 => 
    array (size=4) 
     0 => string 'Gluten' (length=6) 
     1 => string 'Lactose' (length=7) 
     2 => string 'Egg' (length=3) 
     3 => string 'Vegetarian' (length=10) 
    3 => 
    array (size=4) 
     0 => string 'Nut' (length=3) 
     1 => string 'Egg' (length=3) 
     2 => string 'Vegetarian' (length=10) 
     3 => string 'Vegetarian with Seafood' (length=23) 
    4 => 
    array (size=4) 
     0 => string 'Shellfish' (length=9) 
     1 => string 'Lactose' (length=7) 
     2 => string 'Egg' (length=3) 
     3 => string 'Vegetarian' (length=10) 
+0

大丈夫、私はこれを試してみましょう..ありがとう – user1986245

+0

私はこれを使用することができないように見えるので、より多くのフィールドを追加するテンプレートを使用しています。テンプレートは[1] []を何度も繰り返しコピーします。 – user1986245

関連する問題