最近做项目用到的thinkphp框架遇到了同时更新多条数据的问题,查看了下文档,对比网上前辈的代码,现在整理一下,以便留存。
<html>
<head></head>
<table class="table table-bordered gtable">
<thead>
<tr>
<th>属性值</th>
<th>颜色</th>
<th>市场价</th>
<th>本店价</th>
<th>库存</th>
<th class="addonce">新增一行</th>
</tr>
</thead>
<input type="hidden" id="linenum" name="trnum" value="{$trcount}"><!--该值为从数据库中传过来一共有 多少条数据,用select count(*) from tablename 方法 在控制器中for循环更新会用到-->
<tbody id="detailtable" >
<foreach name="pdata" item="vo">
<tr>
<input type="hidden" name="pid" value="{$vo.pid}">
<input type="hidden" name="goodeid[]" value="{$vo.id}">
<td><input type="text" name="val[]" value="{$vo.val}" ></td>
<td><input type="text" name="color[]" value="{$vo.color}"></td>
<td><input type="text" name="price[]" value="{$vo.price}"></td>
<td><input type="text" name="sales_price[]" value="{$vo.sales_price}"></td>
<td><input type="text" name="stock[]" value="{$vo.stock}"></td>
<td class="deltr" id="toDel">删除本行</td>
</tr>
</foreach>
</tbody>
</table>
</html>
样式如图,css代码就不贴了。下面是控制器中接收html代码中的控制器中方法。
$goodscolor = M('goodscolor');
$trcnt = I('post.trnum');
for($i = 0;$i<$trcnt;$i++){
$goodscolor->id = intval($_POST['goodeid'][$i]);
$goodscolor->color = $_POST['color'][$i];
$goodscolor->price = $_POST['price'][$i];
$goodscolor->sales_price = $_POST['sales_price'][$i];
$goodscolor->stock = intval($_POST['stock'][$i]);
$goodscolor->val = $_POST['val'][$i];
$goodscolor->discount = round(($goodscolor->sales_price)/($goodscolor->price)*10,2);
$goodscolor->save();
}
以上为thinkphp更新多条数据方法,其中表格中“增加一行”和“删除本行”通过jquery实现页面效果,代码如下(可看可不看),但是数据并没有更新。等写完该ajax再上传。jquery代码如下
$(function(){
$(".addonce").click(function(){
$("#detailtable:last").append('<tr><td><input type="text" name="val[]" value=""><td><input type="text" name="color[]" value=""><td><input type="text" name="price[]" value=""><td><input type="text" name="sales_price[]" value=""><td><input type="text" name="stock[]" value=""><td class="deltr" id="toDel" >删除本行</td></tr>');
var tr = Number($("#linenum").attr("value"));
var newtr = tr+1;
$("#linenum").attr("value",newtr);
//alert($("#linenum").attr("value"));
});
$("table").delegate(".deltr","click",function(){
$(this).parent().fadeOut(500, function(){
$(this).empty();
});
var tr = Number($("#linenum").attr("value"));
var newtr = tr-1;
$("#linenum").attr("value",newtr);
//alert($("#linenum").attr("value"));
})
})