2017-01-23 232 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”之间的差距。 (有人删除选择输入)

希望这有助于:)