通过jquery克隆表并将其数据插入数据库

时间:2019-03-15 18:43:42

标签: jquery laravel

您好,我是laravel的新手。我想克隆我的表并单击提交按钮后添加多个条目,它将所有数据保存到数据库中

我面临的问题是,当我单击“提交”按钮时,它只保存一个记录,而不是所有记录

我的观点

        function addRow() {
        //copy the table row and clear the value of the input, then append 
 the row to the end of the table
        $("#formTable tbody tr:first").clone().find("input").each(function 
  () {
            $(this).val('');
        }).end().appendTo("#formTable");
        $("#removeclone").removeAttr("disabled");

    };
</script>
<div id="Home" style="width: 60%; margin: 0px auto;"></div>

<form method="post" action="insertrequest">
    @csrf
    <table id="formTable" >
        <thead>
            <td>Quantity</td>
            <td>Unit</td>
            <td>Description</td>
            <td>Remarks</td>
        </thead>
        <tr>
            <td><input type="text" name="quantity" id="quantity"></td>
            <td><select name="units_id" id="units_id">
                    @foreach($unit as $units)
                        <option value="{{$units->id}}">{{$units->unit_name}}</option>
                    @endforeach
                </select></td>
            <td><input type="text" name="description" id="description"></td>
            <td><input type="text" name="remarks" id="remarks"></td>
        </tr>
    </table>
    <input type="submit" value="submit">
</form>
<input value="addrow" type="button" id="addrow" onclick="javascript: addRow();">

我的路线

Route::Post('insertrequest','Home@insertrequest');

和我的控制器

    public function insertrequest(Request $requset)
{
    $quantity[]=$requset->input('quantity');
    $units_id[]=$requset->input('units_id');
    $description[]=$requset->input('description');
    $requster='1';
    $remarks[]=$requset->input('remarks');
    for($i = 0; $i < count($quantity); $i++)
    {
        DB::insert('insert into procurment_requests (quantity,units_id,description,`requster`,remarks) 
        values(?,?,?,?,?)',
            [$quantity[$i],$units_id[$i],$description[$i],$requster[$i],$remarks[$i]]);
    }


}

enter image description here

1 个答案:

答案 0 :(得分:1)

您遇到了许多阻碍所有记录保存的事情。克隆行时,就是在克隆单个选项select元素。与第一个一样,您要克隆的元素将仅允许一个答案传递到服务器。

此外,当您克隆时,我相信您正在克隆一个新的选择框,但具有相同的名称和ID到新行中。提交者只会看到其中之一。 (加上dom将适合)。

鉴于您当前的体系结构,我认为这不可行。我建议可能克隆单个选择框的选项而不是整个行。搜索SO的简便方法。然后,使其成为多选(<select name="units_id[]" multiple...etc>)。

然后,用户可以单击任意数量的选项-它们将作为数组发送出去。

在服务器端,更改

$units_id[]=$requset->input('units_id');

收件人:

$units_ids=$requset->input('units_id');

您拥有的方式只会给您一个条目,而不会给您一个数组-那样行不通。然后,您可以在该unit_ids变量中使用一个数组。

或者,您可以考虑采用多行方法,但是使用不同的选择名称和ID ,以及完全不同的形式,这样它们就不会发生冲突。

不确定是否可以使用这种稍有不同的方法来工作,但是我想您会努力尝试另一种工作方式。

HTH