首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将msql中的数据提取到select选择器中进行编辑

问将msql中的数据提取到select选择器中进行编辑
EN

Stack Overflow用户
提问于 2020-07-20 16:04:25
回答 1查看 87关注 0票数 2

我有一个代码,插入数据从一个模态表单到两个相关的表,即inventory_order表和inventory_order_product表。代码运行得很好,但是当我想要将相同的数据取回到模式表单中进行编辑时,我的问题就出现了。fetch single的代码只检索selectpicker中第一行的数据,而不检索其余行的数据。如果我的问题不清楚,请看下面的图片,请耐心等待我,我是php,ajax和mysql的新手。

​

​

​

代码语言:javascript
复制
        $(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');
                    $('#inventory_order_name').val(data.inventory_order_name);
                    $('#inventory_order_date').val(data.inventory_order_date);
                    $('#inventory_order_address').val(data.inventory_order_address);
                    $('#span_product_details').html(data.product_details);
                    $('#payment_status').val(data.payment_status);
                    $('.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');
                }
            })
        });
代码语言:javascript
复制
    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)
        {
            $output['inventory_order_name'] = $row['inventory_order_name'];
            $output['inventory_order_date'] = $row['inventory_order_date'];
            $output['inventory_order_address'] = $row['inventory_order_address'];
            $output['payment_status'] = $row['payment_status'];
        }
        $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 = '';
        $count = $count++;
        foreach($sub_result as $sub_row)
        {
            $product_details .= '
            <script>
            $(document).ready(function(){
                $("#product_id'.$count.'").selectpicker("val", '.$sub_row["product_id"].');
                $(".selectpicker").selectpicker();
            });
            </script>
            <span id="row'.$count.'">
                <div class="row">
                    <div class="col-md-8">
                        <select name="product_id[]" id="product_id'.$count.'" class="form-control selectpicker" data-live-search="true" required>
                            '.fill_product_list($connect).'
                        </select>
                        <input type="hidden" name="hidden_product_id[]" value="'.$sub_row["product_id"].'" />
                    </div>
                    <div class="col-md-3">
                        <input type="text" name="quantity[]" class="form-control" value="'.$sub_row["quantity"].'" required />
                    </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>
            ';
            
        }
        $output['product_details'] = $product_details;
        echo json_encode($output);
    }

​

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-20 22:00:36

你的代码的问题是后端代码中的变量选择器,这是在你的foreach..循环之外声明的,所以当你的循环第一次运行时,它会有正确的值,即:0,但你永远不会递增它,这就是为什么它只给第一个选择器提供正确的值。相反,您需要增加它的值来设置第二个值、第三个值等等。即:

代码语言:javascript
复制
foreach($sub_result as $sub_row)
 {
//you code html and jquery

 $count = $count++;//add this inside for loop
}

还有,我不明白你为什么要给$count = '';。相反,它应该是$count = 0;

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62991083

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档