Внутри класса есть метод, особо в код не вчитывайтесь (получаем ссылку на excel документ, разбираем его, обновляем данные в бд, если совпадает идентификатор).
Проблема в том, что есть условие, если некоторое поле >0, то данные этой строки excel документа не заносить в бд, а поместить в отдельную таблицу в новой вкладке, позволить дописать и обновить.
Это как менять колесо у машины на скорости.
Дайте какую идею. Спасибо.
PHP:
скопировать код в буфер обмена
function upload() { $path = ROOT_DIR.'/temp/'; copy($_FILES['file']['tmp_name'],$path.'upload.xls'); require(LIBS_DIR.'phpexcel/PHPExcel/IOFactory.php'); $objPHPExcel = PHPExcel_IOFactory::load("temp/upload.xls"); $objPHPExcel->setActiveSheetIndex(0); $aSheet = $objPHPExcel->getActiveSheet(); $k = 1; $val = false; foreach($this->upload_data as $key=>$v) { if(!empty($_POST[$v['name']])) { $this->upload_data[$key]['col'] = $_POST[$v['name']]; } else { unset($this->upload_data[$key]); } } while($k) { $tmp = $aSheet->getCellValue('B'.$k); foreach($this->upload_data as $row) { $item[$row['name']] = $aSheet->getCellValue($row['col'].$k); } $k++; } foreach($array as $arr) { $qwert = ""; $row['service_date'] = $this->tools->dateToYmD($arr['service_date']); $qwert .="`service_date` = '".$row['service_date']."', "; $row['invoice'] = $arr['invoice']; if($_REQUEST['both']) { $tmp = explode(' ',$arr['last_name']); $row['surname'] = $tmp[0]; for ($x=1; $x<count($tmp); $x++){ $row['name'] .=$tmp[$x]." "; } $qwert .="`name` = '".$row['name']."', "; } else { $row['name'] = $arr['first_name']; $qwert .="`name` = '".$row['name']."', "; $row['surname'] = $arr['last_name']; $qwert .="`surname` = '".$row['surname']."', "; } $row['dob'] = $this->tools->dateToYmD($arr['dob']); $qwert .="`dob` = '".$row['dob']."', "; $row['total_amount'] = $arr['total_amount']; $qwert .="`total_amount` = '".$row['total_amount']."', "; $row['discount'] = round((1 -$arr['amount_discounted']/$arr['total_amount'])*100 , 2 ); $qwert .="`discount` = '".$row['discount']."', "; $row['discount_amount'] = $arr['total_amount']-$arr['amount_discounted']; $qwert .="`discount_amount` = '".$row['discount_amount']."', "; $row['discounted'] = $arr['amount_discounted']; $qwert .="`discounted` = '".$row['discounted']."', "; $row['deductible'] = $arr['deductible']; $qwert .="`deductible` = '".$row['deductible']."', "; $row['cc'] = $arr['cc']; $qwert .="`cc` = '".$row['cc']."', "; $row['not_covered'] = $arr['not_covered']; $qwert .="`not_covered` = '".$row['not_covered']."', "; $row['ins_paid'] = $arr['paid_ins']; $qwert .="`ins_paid` = '".$row['ins_paid']."', "; $row['factual_balance'] = intval($arr['factual_balance']) > 0 ? $arr['factual_balance'] : 0; $qwert .="`factual_balance` = '".$row['factual_balance']."', "; $row['date_sent'] = $this->tools->dateToYmD($arr['date_sent']); $qwert .="`date_sent` = '".$row['date_sent']."', "; $row['date_paid'] = $this->tools->dateToYmD($arr['date_paid']); $qwert .="`date_paid` = '".$row['date_paid']."', "; // эти высчитываются $row['pat_debt'] = $arr['not_covered'] + $arr['deductible'] + 0; $qwert .="`pat_debt` = '".$row['pat_debt']."', "; $row['debt'] = $arr['deductible']+$arr['not_covered']; $qwert .="`debt` = '".$row['debt']."' "; $tmp = $this->db->query("UPDATE `cases` SET ".$qwert." WHERE `invoice`= '".$row['invoice']."'"); } }
|