多选选项

时间:2017-01-23 08:02:26

标签: php jquery html mysql

我有两个选择框一个选择框是多个选择选项,有一个添加更多按钮添加多个具有相同选择框的行,值以数组格式传递,我想打印每一行多个选择选项。

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

我在第一个选择框中选择第一个选项,在第二个选择框中选择多个选项(选项1和选项2),在第二行中我选择第一个选择框中的第二个选项,第二个选择框选择多个选项(选项3和选项4)。 我点击我要打印的提交按钮

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 个答案:

答案 0 :(得分:1)

首先:重新分配你作为foreach来源的var是不明智的

$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++;
}

请注意,当您在&#34; ID&#34;之间存在差距时,此代码将无法正常工作。选择输入名称。 (有人删除选择输入)

希望这有点帮助:)