我正在接受这样的JSON POST。
{"item_sku":["016","APL","017"],"item_quantity":[2,4,1]}
我想将其插入到mysql数据库表和名为“item_sku”和“item_quantity”的列中。我想这会插入三行。
HTML页面:
<form id="form1" class="p-md col-md-6" ng-submit="addOrder()">
<ul class="list-group m-b-sm md-whiteframe-z0" ng-repeat="item in cart.items">
<li class="list-group-item">
<a ui-sref="app.product({productSku: item.sku})" class="pull-right w-56"><img ng-src="http://192.168.0.228/app/{{ item.image || 'img/default_product.jpg' }}" alt="{{item.sku}}" class="img-responsive"></a>
<div class="clear">
<b>{{item.name}}</b><br>
<span style="color:#666;font-size:12px;">{{item.description}}</span><br>
<span style="color:#666;font-size:12px;">SKU# {{item.sku}}</span>
<input type="text" ng-model="sku[$index]" ng-init="sku[$index]=item.sku">
<br><br>
</div>
<div>
<!-- use type=tel instead of to prevent spinners -->
<button
class="form-control btn btn-grey" type="button" style="width:34px;background-color:#ddd;"
ng-disabled="item.quantity <= 1"
ng-click="cart.addItem(item.sku, item.name, item.price, -1)">-</button>
<input
class="form-control btn btn-grey" size="2" style="width:44px" type="tel"
ng-model="item.quantity"
ng-change="cart.saveItems()" />
<button
class="form-control btn btn-grey" type="button" style="width:34px;background-color:#ddd;"
ng-disabled="item.quantity >= 100"
ng-click="cart.addItem(item.sku, item.name, item.price, +1, $index)" >+</button>
<input type="text" ng-model="quantity[$index]" ng-init="quantity[$index]=item.quantity">
</div>
</li>
<div class="p b-t b-t-2x">
<a style="color:#666;" ng-click="cart.addItem(item.sku, item.name, item.price, -10000000)" >
<i class="icon mdi-action-delete i-20" style="color:#666;"></i>Remove</a>
<span class="pull-right">{{item.price * item.quantity | currency:' ₹ ':2}}</span>
</div>
</ul>
<button type="submit" class="btn btn-info m-t" >Submit</button>
</form>
控制器:
app.controller('OrderCtrl', function($scope, $location, $http ) {
$scope.sku = [];
$scope.quantity = [];
$scope.addOrder = function(){
$http.post(serviceURL+'submit_order.php', {
'item_sku':$scope.sku,
'item_quantity':$scope.quantity
})
.success(function(data,status,headers,config){
$location.path('app/feedbackthankyou');
});
};
});
PHP代码:
<?php
header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Headers: Content-Type");
include "db.php";
// Using Static Data from POST -- Just for testing
$a='{"item_sku":["016","APL","017"],"item_quantity":[2,4,1]}';
$data = json_decode($a);
var_dump($data);
foreach ($data as $value)
{
echo $value->item_sku;
echo $value->item_quantity;
}
?>
我猜现在细节已经足够了。顺便说一句,我正在使用AngularJS来创建CART。请帮忙。
答案 0 :(得分:0)
数据的形状使数据库插入有点复杂化。应该位于同一行的数据分为两个单独的对象:$data->item_sku
和$data->item_quantity
。
如果一行中的所有内容都放在一个变量或一个数组元素中会更简单。我会改变我提交的数据的形状。我只会提交item_sku
。
item_quantity
和items
<强>的Javascript 强>
var items=[];
for(var i=0; i<$scope.sku.length; i++){
items.push({'sku':$scope.sku[i], 'qty':$scope.quantity[i]});
}
$http.post(serviceURL+'submit_order.php', {items:items})
然后在 PHP方面
$data = json_decode($_POST['items'],true);
现在$data
是一个具有以下形状的项目数组:
[
['sku'=>'016','qty'=>2],
['sku'=>'APL','qty'=>4],
];
这可以更容易地插入到您的数据库中,因为数据已经按行组织。你说你已经知道如何进行数据库插入,所以我会让你解决这个问题。