2017-01-23 190 views
3

我有兩個選擇框一個選擇框是多選擇選項,有一個添加更多按鈕添加多個行相同的選擇框,值以數組格式傳遞,我想打印每一行多個選擇選項。多選擇選項

------------------------------------------------------------------ 
    Select1 |  Select2  |   Textbox 
------------------------------------------------------------------ 
Option1    Option1      
Option2    Option2 
Option3    Option3 
Option4    Option4 

我選擇在第一選擇框和第二選擇框中的多個選項中選擇第一選項(選項1和選項2),在第二行i選擇在第一選擇框和第二選擇框中的多個選項中選擇(選項3和3選項第二選項)。 我點擊提交按鈕,我想打印

Option1    Option1 
Option1    Option2 

Option2    Option3 
Option2    Option4 

但現在打印(需要從多個選擇中的所有數據)

Option1    Option1 
Option1    Option2 
Option1    Option3 
Option1    Option4 

Option2    Option1 
Option2    Option2 
Option2    Option3 
Option2    Option4 

這裏是我的代碼:

<div id="lobrows"> 
     <div class="form-group"> 
      <div class="col-sm-4"><label>Reson</label> 
       <select class="form-control selectpicker" data-live-search="true" name="reson[]" required="required"> 
        <option>--Select--</option> 
       <option value="1">List 1</option> 
       <option value="2">List 2</option> 
       <option value="3">List 3</option> 
       <option value="4">List 4</option> 
       </select> 
      </div> 
      <div class="col-sm-4"><label>Service </label> 
       <select class="form-control selectpicker" data-live-search="true" name="service[]" id="service" multiple="multiple"> 
        <option>--Select--</option> 
        <option value="1">List 1</option> 
        <option value="2">List 2</option> 
        <option value="3">List 3</option> 
        <option value="4">List 4</option> 
       </select> 
      </div> 
      <div class="col-sm-4"><label>Name </label> 
       <input type="text" class="form-control" name="name[]" placeholder="Name" /> 
      </div> 
     </div> 
    </div> 
    <a href="#" class="pull-right" id="add"><i class="fa fa-plus"></i>&nbsp;add</a> 

<script type="text/javascript"> 
    $(document).ready(function() { 
     $('#add').click(function(e) { 
      e.preventDefault(); 
      var i=$('.mrbtm').length+1; 
      $('#lobrows').append('<div class="mrbtm"><div class="form-group"><div class="col-sm-4"><label>Reson </label><select class="form-control selectpicker" data-live-search="true" name="reson[]"><option>--Select--</option><option value="1">List 1</option> 
       <option value="2">List 2</option> 
       <option value="3">List 3</option> 
       <option value="4">List 4</option></select></div><div class="col-sm-4"><label>Service </label><select class="form-control selectpicker" data-live-search="true" name="service[]" id="service'+i+'" multiple="multiple"><option>--Select--</option><option value="1">List 1</option><option value="2">List 2</option><option value="3">List 3</option><option value="4">List 4</option></select></div><div class="col-sm-4"><label>Name </label><input type="text" class="form-control" name="name[]" placeholder="Name" required="required" /></div></div><a href="#" class="pull-right remove"><i class="fa fa-minus"></i> Remove</a><br /></div>'); 
      $('.selectpicker').selectpicker(); 
      $('.selectpicker').selectpicker('refresh'); 
     }); 
     $(document).on('click', '.remove', function(e) { 
      e.preventDefault(); 
      $(this).parent('div').remove(); 
      i--; 
     }); 
    }); 
</script> 

這是我的PHP代碼:

<?php 
foreach ($reson as $id => $value) { 
    $reson = ($reson[$id]); 
    $namep = ($name[$id]); 


    foreach ($service as $ii => $valu) { 
     $r_service = ($service[$ii]); 
     echo "Option".$reson."----"."Option".$r_service ."<br>"; 
    } 
} 
?> 

回答

1

首先:它不是明智的重新分配VAR您正在爲源的foreach

$reson = ($reson[$id]); 

其次,我不能看到張貼的代碼的任何地方你的窗體。我建議你打印$ _REQUEST [](POST/GET,按照你的表單類型),看看你會得到什麼。 我很擔心,你會看到來自多個選擇輸入的所有使用的值。 也就是因爲你名字所有選擇(用js生成)同名。 您應該唯一標識選擇,以便您知道哪些是哪些。

現在您將擁有多個具有相同名稱的選擇輸入。 當生成新的輸入時,您可以應用與id屬性一樣的操作。

在PHP的話,你可以這樣做:

$i = 1; 
while(true){ 
    if(!isset($_POST['reson'.$i])){ 
     break; 
    } 
    $selectedOptions = $_POST['reson'.$i]; 
    //your magic 

    $i++; 
} 

注意,該代碼將無法正常工作時,你將不得不選擇輸入名稱「IDS」之間的差距。 (有人刪除選擇輸入)

希望這有助於:)