我需要将JSON数据插入数据库中, 但是我有像 1个客户可以具有多个花的详细信息,用户可以输入数量 这样,N个客户可以将N个鲜花详细信息排列成阵列,如图所示
这是上面图片的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> 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>
但这是错误的,因为它不依赖数量的形式同时获得两个客户
如何解决此问题 请就此问题帮助我