您的位置:首页 > 编程语言 > PHP开发

thinkPHP批量处理数据,并开启事务提交,完整实例

2018-01-03 13:49 302 查看
public function jijubinding(){

$Model = M();          //先用M函数实例化一个空对象
$Model->startTrans();  //开启事务
$data['user_id'] = $_POST['userid'];

//1.处理textarea输入的数组
if ($this->isPost()) {
if ($this->_post('jishennum')) {
$r = explode("\r\n", $this->_post('jishennum'));
//去掉空行元素
foreach ($r as $key => $val) {
if (empty($val)) {
continue;
}
$arr[] = $val;
}
//去除字符串间的空格
$arr = str_replace(' ', '', $arr);
}
}
if($arr==""){
$this -> error('请输入机具号!!!');
}
//var_dump($arr);die();
//数组的长度
$length = count($arr, COUNT_NORMAL);
//var_dump($length);die();
if($length>20){
$this -> error('每次最多只能操作20台机具');
}
//获取该地市下所有的客户经理id
$mydepid = $_SESSION['my_info']['dep'];
$depfind = M("Dep")->where("id=" . $mydepid)->find();
//var_dump($depfind);die();
$deplist = array();
if ($depfind ['pid'] == '0') {
// 说明这个市级
$deplist = M("Dep")->where("id=" . $mydepid . " or pid=" . $mydepid)->field("id")->select();
} else {
$deplist = M("Dep")->where("id=" . $depfind ['pid'] . " or pid=" . $depfind ['pid'])->field("id")->select();
}
//二维变一维
foreach ($deplist as $key => $value) {
if ($value == "") {
continue;
}
$deplist[$key] = $value['id'];
}
//批量绑定机具
foreach ($arr as $m => $n) {

if (empty ($n)) {
continue;
}
$map['bodycode'] = $n;
//筛选出重复机具号
$repeat = "";
for ($key = $m + 1; $key < $length; $key++) {
if ($arr[$m] == $arr[$key]) {
$repeat = "222";
break;
}
}
//2.判断各种错误原因
if($repeat == ""){
if ( strlen( $map['bodycode'] )<20 ) {
$stockArray = M("Kuguan_stock")->where($map)->find();
if($stockArray!=""){
if(in_array($stockArray['depid'], $deplist)){
if($stockArray['flag1']==0){
if($stockArray['user_id']==""){

$Model->table('allinpay_kuguan_stock')->where($map)->data($data)->save();
$meicuo[$m]['bodycode'] = $n;
$meicuo[$m]['qwer'] = "";
}else{
$mistake[$m]['bodycode'] = $n;
$mistake[$m]['qwer'] = "机具已被绑定";
}
}else{
$mistake[$m]['bodycode'] = $n;
$mistake[$m]['qwer'] = "机具未在库中";
}
}else{
$mistake[$m]['bodycode'] = $n;
$mistake[$m]['qwer'] = "机具不属此地市";
}
}else{
$mistake[$m]['bodycode'] = $n;
$mistake[$m]['qwer'] = "库房无此机具";
}
}else{
$mistake[$m]['bodycode'] = $n;
$mistake[$m]['qwer'] = "机具号过长";
}
}else{
$mistake[$m]['bodycode'] = $n;
$mistake[$m]['qwer'] = "机具号重复";
}

} //foreach结束

//把两个数组合成一个数组
if (empty($meicuo) && !empty($mistake)) {
$result = $mistake;
} elseif (!empty($meicuo) && empty($mistake)) {
$result = $meicuo;
} elseif (!empty($meicuo) && !empty($mistake)) {
$result = array_merge_recursive($meicuo, $mistake);
} else {
$result = null;
}
if($mistake==""){
$roll = true;
}else{
$roll = false;
}

//开始提交绑定
if ($roll == true) {

$Model->commit();
$username = M('User')->where("id=" . $_POST['userid'])->getField('username');
foreach ($arr as $m => $n) {

if (empty ($n)) {
continue;
}
$cheng = M('kuguan_stock')->where(" bodycode='$n' ")->find();
$success[$m]['jijutype'] = $cheng['jijutype'];
$success[$m]['jijumodel'] = $cheng['jijumodel'];
$success[$m]['bodycode'] = $cheng['bodycode'];
$success[$m]['type'] = $cheng['type'];
$success[$m]['flag2'] = $cheng['flag2'];
$success[$m]['flag1'] = $cheng['flag1'];
$success[$m]['box_id'] = $cheng['box_id'];
$success[$m]['username'] = $username;
}
$this->assign("success", $success);
$this->d
9d1f
isplay('success');

} else {
$Model->rollback();
$this->assign("result", $result);
$this->display('mistake');
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: