如何解决php数组中的JSON Formate问题插入数据库

时间:2018-12-10 14:33:04

标签: php arrays json

我需要将JSON数据插入数据库中, 但是我有像 1个客户可以具有多个花的详细信息,用户可以输入数量 这样,N个客户可以将N个鲜花详细信息排列成阵列,如图所示

it has customer_id[] is in hidden text

这是上面图片的https://jsfiddle.net/r6dtk30j/2/

我的php代码是

public function ajax_addOrderToGroup() {

    $flower_id = $this->input->post('flower_id');
    $flower_price = $this->input->post('flower_price');
    $customer_id = $this->input->post('customer_id');
    $quantity = $this->input->post('quantity');

    $locationData = array();
    $i = 0;
    foreach ($customer_id as $key2 => $fname2) {
        $locationData['orders'][$i]['customer_id'] = $_POST['customer_id'][$key2];


        $j = 0;
        foreach ($flower_id as $key => $fname) {
            $locationData['orders'][$i]['flower_id'][$j] = $_POST['flower_id'][$key];
            $j++;
        }
        $k = 0;
        foreach ($flower_price as $key1 => $fname1) {
            $locationData['orders'][$i]['flower_price'][$k] = $_POST['flower_price'][$key1];
            $k++;
        }
        $l = 0;
        foreach ($quantity as $key1 => $fname1) {
            $locationData['orders'][$i]['quantity'][$l] = $_POST['quantity'][$key1];
            $l++;
        }
        $i++;
    }

    echo json_encode($locationData);
}

并且JSON结果是

{
"orders": [
    {
        "customer_id": "21",
        "flower_id": [
            "1",
            "2"
        ],
        "flower_price": [
            "56",
            "7"
        ],
        "quantity": [
            "13",
            "2",
            "12",
            "3"
        ]
    },
    {
        "customer_id": "20",
        "flower_id": [
            "1",
            "2"
        ],
        "flower_price": [
            "56",
            "7"
        ],
        "quantity": [
            "13",
            "2",
            "12",
            "3"
        ]
    }
]

}

Javascript:

  $(document).ready(function () {

                                    $('#datatables').DataTable({
                                        "pagingType": "full_numbers",
                                        lengthMenu: [[2, 4, 8, -1], [2, 4, 8, "All"]],
                                        pageLength: 5,
                                        responsive: true,
                                        language: {
                                            search: "_INPUT_",
                                            searchPlaceholder: "Search records",
                                        }

                                    });

                                    $(".submit-btn").hide();
                                    var table = $('#datatables').DataTable();
                                    table.on('click', '.edit', function (e) {
                                        var $tr = $(this).closest('tr');
                                        var group_id = document.getElementById('group_id').value;
                                        if (group_id == 0) {
                                            notifications('Choose Group Name', 'Please Choose Group', 'danger');
                                        } else {
                                            var data = table.row($tr).data();
                                            var flower_id = data[0];
                                            var flower_name = data[1];
                                            var flower_price = $('#flower_price_' + flower_id).val();
                                            if (flower_price.length == 0) {
                                                notifications('OOPS..!', 'Required Flower Price', 'danger');
                                            } else {
                                                $(".hidden_values").append('<input type ="hidden" name="flower_id[]" value=' + flower_id + '><input type ="hidden" name="flower_price[]" value=' + flower_price + '>'); //add input box
                                                $(".flower_details").append('<tr><td>' + flower_name + '</td> <td>' + flower_price + '</td><td class="text-left"><input type="number" class="form-control" id="quantity" name="quantity[]"></td></tr>'); 
                                                $('#flower_id_' + flower_id).prop('disabled', true);

                                                e.preventDefault();
                                            }
                                        }

                                    });
                                    $('.card .material-datatables label').addClass('form-group');
                                });

                                function getCustomers() {
                                    var group_id = document.getElementById("group_id").value;
                                    $.ajax({
                                        url: baseurl + "customer/ajax_getGroupCustomerById",
                                        method: "post",
                                        data: {group_id: group_id},
                                        success: function (data) {
                                            var jsonobj = JSON.parse(data);
                                            var index = 1;
                                            var htmlText = '';
                                            for (var key in jsonobj) {
                                                htmlText += '<input type ="hidden" name="customer_id[]" class="customer_id" value=' + jsonobj[key]['customer_id'] + '>';
                                                htmlText += '<br/><h4><b>' + index++ + '.</b> Customer: <b class="text-primary">' + jsonobj[key]['first_name'] + ' ' + jsonobj[key]['last_name'] + '</b><h4>';
                                                htmlText += '<table class="table table-striped table-no-bordered" cellspacing="0" width="100%" style="width:100%">' +
                                                        '<thead><tr><th>Flower Name</th><th>Flower Price</th><th>Quantity</th></tr></thead><tbody class="flower_details">' +
                                                        '</tbody></table>';

                                            }

                                            $('.customerDetails').append(htmlText);
                                        }
                                    });

                                }




                                function addGroupOrderForm() {
    var data = $("#grouporder-form").serialize();
    $.ajax({
        type: "POST",
        url: baseurl + "product/ajax_addOrderToGroup",
        data: data,
        beforeSend: function () {
            $("#error").fadeOut();
            $("#grouporder-submit").html('<span class="glyphicon glyphicon-transfer"></span> &nbsp; Creating ...');
        },
        success: function (response) {
            console.log(response);
            return false;
        }
    });
    return false;
}

HTML

  <div class="content">
        <div class="container-fluid">
            <div class="row">
                <div class="sticky_1">
                    <div class="col-md-5">
                        <div class="col-lg-8 col-md-8 col-md-offset-2 col-lg-offset-2 col-sm-12">
                            <select class="selectpicker" name="group_id" onchange="getCustomers()" id="group_id" data-style="btn btn-success btn-round" title="Single Select" data-size="7">
                                <option disabled selected value="0">Choose Group</option>
                                <?php
                                foreach ($group as $value) {
                                    ?>
                                    <option value="<?= $value->id ?>"><?= $value->group_name ?></option>
                                <?php } ?>
                            </select>
                        </div>
                        <div class="card">
                            <div class="card-header card-header-icon" data-background-color="green">
                                <i class="material-icons">assignment</i>
                            </div>
                            <div class="card-content">
                                <h4 class="card-title">Flowers</h4>
                                <div class="toolbar">
                                    <!--        Here you can write extra buttons/actions for the toolbar              -->
                                </div>
                                <div class="material-datatables">
                                    <table id="datatables" class="table table-striped table-no-bordered table-hover" cellspacing="0" width="100%" style="width:100%">
                                        <thead>
                                            <tr>
                                                <th>Sno.</th>
                                                <th>Flower Name</th>
                                                <th>Price</th>
                                                <th>#</th>
                                            </tr>
                                        </thead>
                                        <tbody>

                                            <?php
                                            foreach ($flowers as $value) {
                                                ?>
                                                <tr>
                                                    <td><?= $value->id ?></td>
                                                    <td><?= $value->flower_name ?></td>
                                                    <td class="text-left">
                                                        <input type="number" placeholder="Flower Price" class="form-control flower_price" name="flower_price" id="flower_price_<?= $value->id ?>">
                                                    </td>
                                                    <td>
                                                        <input type="button" class="hidden-xs btn btn-warning btn-raised btn-sm edit" name="flower_id" value="Add" id="flower_id_<?= $value->id ?>">
                                                        <input type="button" class="visible-xs btn btn-warning btn-sm edit" name="flower_id" value="+" id="flower_id_<?= $value->id ?>">
                                                    </td>
                                                </tr>
                                            <?php } ?>
                                        </tbody>
                                    </table>
                                </div>
                            </div>
                            <!-- end content-->
                        </div>
                        <!--  end card  -->
                    </div>
                </div>
                <div class="col-md-7">
                    <div class="row">

                        <div class="col-lg-10 col-lg-offset-1 col-md-12 col-md-offset-1 col-sm-12">
                            <form id="grouporder-form" name="grouporder_form" role="form" style="display: block;" method="post">
                                <div class="customerDetails">
                                    <div class="hidden_values"></div>
                                </div>

                                <center>
                                    <button type="submit" name="finish" id="grouporder-submit" class="btn btn-finish btn-fill btn-success btn-wd submit-btn">
                                        <span class="spinner"><i class="icon-spin icon-refresh" id="spinner"></i></span> Submit
                                    </button>
                                </center>
                            </form>

                        </div>
                    </div>

                </div>

            </div>
        </div>
    </div>

但这是错误的,因为它不依赖数量的形式同时获得两个客户

如何解决此问题 请就此问题帮助我

0 个答案:

没有答案