首页 > 解决方案 > 在 CRUD 应用程序中更新期间增加输入 id

问题描述

我创建了一个 CRUD 应用程序,它在行中具有动态输入。输入的第一列中的输入字段对右侧的输入进行汇总,得出总行数。当我单击附加图像所示的更新时,我将数据库中的数据返回到输入字段中。如果我更改 A 列和 B 列下输入中的数字,则 Total 列下的单元格将分别更改值。但是当我添加新行并输入新数字时,相应的总计输入字段中没有显示任何内容。我通过浏览器上的检查元素检查了问题,我发现当我从数据库中检索数据后添加新行时,新行的 id 从 1 开始计数。我怎样才能让它们开始从该数据库检索到的最后一行的 id 计数计算?

在此处输入图像描述

以下是不同php文件中的代码。

订单.php

<?php
//order.php

include('database_connection.php');
include('header.php');
?>
    <link rel="stylesheet" href="css/datepicker.css">
    <script src="js/bootstrap-datepicker1.js"></script>
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-select/1.12.2/css/bootstrap-select.min.css">
    <script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-select/1.12.2/js/bootstrap-select.min.js"></script>
    <script>
    $(document).ready(function(){
        $('#inventory_order_date').datepicker({
            format: "yyyy-mm-dd",
            autoclose: true
        });
    });
    </script>
    <span id="alert_action"></span>
    <div class="row">
        <div class="col-lg-12">
            
            <div class="panel panel-default">
                <div class="panel-heading">
                    <div class="row">
                        <div class="col-lg-10 col-md-10 col-sm-8 col-xs-6">
                            <h3 class="panel-title">Order List</h3>
                        </div>
                        <div class="col-lg-2 col-md-2 col-sm-4 col-xs-6" align="right">
                            <button type="button" name="add" id="add_button" class="btn btn-success btn-xs">Add</button>        
                        </div>
                    </div>
                </div>
                <div class="panel-body">
                    <table id="order_data" class="table table-bordered table-striped">
                        <thead>
                            <tr>
                                <th>Order ID</th>
                                <th></th>
                            </tr>
                        </thead>
                    </table>
                </div>
            </div>
        </div>
    </div>

    <div id="orderModal" class="modal fade">
        <div class="modal-dialog">
            <form method="post" id="order_form">
                <div class="modal-content">
                    <div class="modal-header">
                        <button type="button" class="close" data-dismiss="modal">&times;</button>
                        <h4 class="modal-title"><i class="fa fa-plus"></i>Create Order</h4>
                    </div>
                    <div class="modal-body">
                        <div class="row">
                            <div class="col-md-4" align="center">
                                <div class="form-control">
                                    <label>Total</label>
                                </div>
                            </div>
                            <div class="col-md-3" align="center">
                                <div class="form-control">
                                    <label>A</label>
                                </div>
                            </div>
                            <div class="col-md-3" align="center">
                                <div class="form-control">
                                    <label>B</label>
                                </div>
                            </div>
                        </div>
                        <hr>
                        <span id="span_product_details"></span>
                        <hr />
                    </div>
                    <div class="modal-footer">
                        <input type="hidden" name="inventory_order_id" id="inventory_order_id" />
                        <input type="hidden" name="btn_action" id="btn_action" />
                        <input type="submit" name="action" id="action" class="btn btn-info" value="Add" />
                    </div>
                </div>
            </form>
        </div>

    </div>
        
<script type="text/javascript">
    $(document).ready(function(){
        var orderdataTable = $('#order_data').DataTable({
            "processing":true,
            "serverSide":true,
            "order":[],
            "ajax":{
                url:"order_fetch.php",
                type:"POST"
            }
        });
        $('#add_button').click(function(){
            $('#orderModal').modal('show');
            $('#order_form')[0].reset();
            $('.modal-title').html("<i class='fa fa-plus'></i> Create Order");
            $('#action').val('Add');
            $('#btn_action').val('Add');
            $('#span_product_details').html('');
            add_product_row();
        });
        function add_product_row(count = '')
        {
            var html = '';
            html += '<span id="row'+count+'"><div class="row">';
            html += '<div class="col-md-4">';
            html += '<input type="text" name="prot_0_qty[]" class="form-control prot_0_qty" id="prot_0_qty'+count+'"/>';
            html += '</div>';
            html += '<div class="col-md-3">';
            html += '<input type="text" name="prot_1_qty[]" class="form-control prot_1_qty" id="prot_1_qty'+count+'"/>';
            html += '</div>';
            html += '<div class="col-md-3">';
            html += '<input type="text" name="prot_2_qty[]" class="form-control prot_2_qty" id="prot_2_qty'+count+'"/>';
            html += '</div>';
            html += '<div class="col-md-1">';
            if(count == '')
            {
                html += '<button type="button" name="add_more" id="add_more" class="btn btn-success btn-xs">+</button>';
            }
            else
            {
                html += '<button type="button" name="remove" id="'+count+'" class="btn btn-danger btn-xs remove">-</button>';
            }
            html += '</div>';
            html += '</div></div><br /></span>';
            $('#span_product_details').append(html);
            $('.selectpicker').selectpicker();
        }
        var count = 0;
        $(document).on('click', '#add_more', function(){
            count = count + 1;
            add_product_row(count);
        });
        $(document).on('click', '.update', function(){
            var inventory_order_id = $(this).attr("id");
            var btn_action = 'fetch_single';
            $.ajax({
                url:"order_action.php",
                method:"POST",
                data:{inventory_order_id:inventory_order_id, btn_action:btn_action},
                dataType:"json",
                success:function(data)
                {
                    $('#orderModal').modal('show');
                    $('#span_product_details').html(data.product_details);
                    $('.modal-title').html("<i class='fa fa-pencil-square-o'></i> Edit Order");
                    $('#inventory_order_id').val(inventory_order_id);
                    $('#action').val('Edit');
                    $('#btn_action').val('Edit');
                }
            })
        });
        function prot_0_qty_cal(count)
        {
            for(j=''; j<=count; j++)
            {
                var prot_0_qty_var = 0;
                var prot_1_qty_var = 0;
                var prot_2_qty_var = 0;
                var prot_1_qty_cal = 0;
                var prot_2_qty_cal = 0;

                    prot_1_qty_var = $('#prot_1_qty'+j).val();
                    if (prot_1_qty_var > 0) {
                        prot_1_qty_cal = parseFloat(prot_1_qty_var);
                    }
                    prot_2_qty_var = $('#prot_2_qty'+j).val();
                    if (prot_2_qty_var > 0) {
                        prot_2_qty_cal = parseFloat(prot_2_qty_var);
                    }
                    prot_0_qty_var = prot_1_qty_cal + prot_2_qty_cal;
                    $('#prot_0_qty'+j).val(prot_0_qty_var);
            }
        }
        $(document).on('blur','.prot_1_qty', function(){
            prot_0_qty_cal(count);
        });
        $(document).on('blur','.prot_2_qty', function(){
            prot_0_qty_cal(count);
        });
    });
</script>

order_action.php

<?php
    include('database_connection.php');
    if(isset($_POST['btn_action']))
    {
        if($_POST['btn_action'] == 'fetch_single')
        {
            $query = "SELECT * FROM inventory_order WHERE inventory_order_id = :inventory_order_id";
            $statement = $connect->prepare($query);
            $statement->execute(
                    array
                    (
                        ':inventory_order_id'   =>  $_POST["inventory_order_id"]
                    ));
            $result = $statement->fetchAll();
            $output = array();
            foreach($result as $row)
            {
                // removed
            }
            $sub_query = "SELECT * FROM inventory_order_product WHERE inventory_order_id = '".$_POST["inventory_order_id"]."'";
            $statement = $connect->prepare($sub_query);
            $statement->execute();
            $sub_result = $statement->fetchAll();
            $product_details = '';
            $count = '';
            foreach($sub_result as $sub_row)
            {
                $product_details .= 
                    "
                        <script>
                            $(document).ready(function(){
                                function prot_0_qty_cal(count)
                                {
                                    for(j=''; j<=count; j++)
                                    {
                                        var prot_0_qty_var = 0;
                                        var prot_1_qty_var = 0;
                                        var prot_2_qty_var = 0;
                                        var prot_1_qty_cal = 0;
                                        var prot_2_qty_cal = 0;

                                            prot_1_qty_var = $('#prot_1_qty'+j).val();
                                            if (prot_1_qty_var > 0) {prot_1_qty_cal = parseFloat(prot_1_qty_var);}

                                            prot_2_qty_var = $('#prot_2_qty'+j).val();
                                            if (prot_2_qty_var > 0) {prot_2_qty_cal = parseFloat(prot_2_qty_var);}

                                            prot_0_qty_var = prot_1_qty_cal + prot_2_qty_cal;
                                            $('#prot_0_qty'+j).val(prot_0_qty_var);
                                    }
                                }
                                $(document).on('blur','.prot_1_qty', function(){
                                    prot_0_qty_cal(".$count.");
                                });
                                $(document).on('blur','.prot_2_qty', function(){
                                    prot_0_qty_cal(".$count.");
                                });
                            });
                        </script>

                    "
                ;
                $product_details .= 
                    '
                        <span id="row'.$count.'">
                            <div class="row">
                                <div class="col-md-4">
                                    <input type="text" name="prot_0_qty[]" class="form-control prot_0_qty" value="'.$sub_row["prot_0_qty"].'" id="prot_0_qty'.$count.'"/>
                                </div>
                                <div class="col-md-3">
                                    <input type="text" name="prot_1_qty[]" class="form-control prot_1_qty" value="'.$sub_row["prot_1_qty"].'" id="prot_1_qty'.$count.'"/>
                                </div>
                                <div class="col-md-3">
                                    <input type="text" name="prot_2_qty[]" class="form-control prot_2_qty" value="'.$sub_row["prot_2_qty"].'" id="prot_2_qty'.$count.'"/>
                                </div>
                                <div class="col-md-1">
                    '
                ;
                if($count == '')
                {
                    $product_details .= '<button type="button" name="add_more" id="add_more" class="btn btn-success btn-xs">+</button>';
                }
                else
                {
                    $product_details .= '<button type="button" name="remove" id="'.$count.'" class="btn btn-danger btn-xs remove">-</button>';
                }
                $product_details .= '
                            </div>
                        </div>
                    </div><br />
                </span>
                ';
                $count++;
            }
            $output['product_details'] = $product_details;
            echo json_encode($output);
        }
    }
?>

标签: phpjquery

解决方案


这个问题是因为你声明var count = 0. 您应该将其声明为最后添加的行的计数值。这应该可以解决问题


推荐阅读