Как создать CSV-файл и автоматически загрузить его после отправки формы в codeigniter? - PullRequest
0 голосов
/ 04 февраля 2019

Я загружаю данные в базу данных через лист Excel.Теперь я хочу создать файл CSV / Excel, который содержит отчеты об успешно вставленных данных и данных, которые не могут быть загружены с сообщением об ошибке.Я понятия не имею, как это сделать в codeigniter.А также он должен быть загружен автоматически после генерации CSV-файла. Ниже приведен мой код, Мой контроллер:

 public function uploadData(){

     if ($this->input->post('pass')) {
               $path = APPPATH .'uploads/';
               require_once APPPATH . "/third_party/PHPExcel.php";
               $config['upload_path'] = $path;
               // echo  $config['upload_path'];exit;
               $config['allowed_types'] = 'xlsx|xls|csv';
               $config['remove_spaces'] = TRUE;
               $this->load->library('upload', $config);
               $this->upload->initialize($config);            
               if (!$this->upload->do_upload('uploadFile')) {
                   $error = array('error' => $this->upload->display_errors());
               } else {
                   $data = array('upload_data' => $this->upload->data());
               }
               if(empty($error)){
                 if (!empty($data['upload_data']['file_name'])) {
                   $import_xls_file = $data['upload_data']['file_name'];
               } else {
                   $import_xls_file = 0;
               }
               $inputFileName = $path . $import_xls_file;
              // echo $inputFileName;exit;
               try {
                   $inputFileType = PHPExcel_IOFactory::identify($inputFileName);
                   $objReader = PHPExcel_IOFactory::createReader($inputFileType);
                   $objPHPExcel = $objReader->load($inputFileName);
                   $allDataInSheet = $objPHPExcel->getActiveSheet()->toArray(null, true, true, true);
                   $flag = true;
                   $i=0;
                   $afftectedinsertRows = 0;
                   $afftectedupdateRows = 0;
                   foreach ($allDataInSheet as $value) {
                     if($flag){
                       $flag =false;
                       continue;
                     }
                     $inserdata[$i]['emp_id'] = $value['A'];
                     $inserdata[$i]['nominee_fname'] = $value['B'];
                     $inserdata[$i]['nominee_lname'] = $value['C'];
                     $inserdata[$i]['nominee_dob'] = date("d-m-Y", strtotime($value['D']));
                     $inserdata[$i]['share_percentile'] = $value['E'];
                     $inserdata[$i]['policy_id'] = $this->input->post('policy_name');

                     $query3 = $this->db->select('*')
                                        ->from('member_policy_nominee')
                                        ->where('emp_id', $inserdata[$i]['emp_id'])
                                        ->get()
                                        ->result_array();
                                       $share = array_column($query3,"share_percentile");
                                       $nominee = array_column($query3,"nominee_id");
                                       $ary = array_sum($share);
                                       $sum = $ary + $inserdata[$i]['share_percentile'];

                    $query = $this->db->select('*')
                                      ->from('member_policy_nominee')
                                      ->where('emp_id', $inserdata[$i]['emp_id'])
                                      ->where('nominee_fname', $inserdata[$i]['nominee_fname'])
                                      ->where('nominee_lname', $inserdata[$i]['nominee_lname'])
                                      ->get();

        if($query -> num_rows() == 0 ) {

                if($sum >= "100" || $inserdata[$i]['share_percentile'] > "100"){

                   $update[$i]['status_upload'] = "Share Percntile Should not exceed 100";
            $this->db->where('emp_id', $inserdata[$i]['emp_id'])
            ->update('member_policy_nominee', $update[$i]);
                    // return ['status' => "Share Percntile Should not exceed 100"];
                  // echo $this->db->last_query();exit;
                  }else{
                   $inserdata[$i]['status_upload'] = "Data inserted successfully";
                    $result =  $this->db->insert('member_policy_nominee', $inserdata[$i]);
                    $afftectedinsertRows = $this->db->affected_rows();
                     // return ['status' => "Imported successfully"];
                       // echo $this->db->last_query();exit;
                 }

               }else{
            $update[$i]['status_upload'] = "Data already Exist";
            $this->db->where('emp_id', $inserdata[$i]['emp_id'])
            ->update('member_policy_nominee', $update[$i]);


}

   // echo $this->db->last_query();exit;
                     $i++;
                      $afftectedinsertRows++;
                      $afftectedupdateRows ++;
                   }  

                   // $result = $this->add_nominee->importdata($inserdata);   
                   if(isset($result)){
                     echo "Imported successfully";
                     // echo   $afftectedinsertRows++;
                   }else{
                     echo "Share Percntile Should not exceed 100";
                     // echo   $afftectedupdateRows ++;;
                   }             

             } catch (Exception $e) {
                  die('Error loading file "' . pathinfo($inputFileName, PATHINFO_BASENAME)
                           . '": ' .$e->getMessage());
               }
             }else{
                 echo $error['error'];
               }

       }

     }
...