0

Есть скрипт который обновляет xls в базу данных MySql. Все происходит на стороне PHP

function import_new_xlsx($path) {
      set_time_limit(0);
      date_default_timezone_set('Asia/Almaty');
      $this->load->helper('string');
      $this->load->helper('date');
 $returnMessage = "";
    try {
        include APPPATH . 'third_party/PHPExcel.php';
        include 'SimpleImage.php';

        $xlsx = PHPExcel_IOFactory::load($path);
        $xlsx->setActiveSheetIndex(0);
        $sheet = $xlsx->getActiveSheet();

        //Соответствие
        /*$mysqlColumn = array(
          'A' => 'title',
          'B' => 'articul',
          'C' => 'barcode',
          'D' => 'usd_price',
          'E' => 'euro_price',
          'F' => 'image',
          'G' => 'discription_pdf',
          'H' => 'price',
          'I' => 'text'
        );*/

        $mysqlColumn = array(
          'A' => 'title',
          'B' => 'articul',
          'C' => 'usd_price',
          'D' => 'euro_price',
          'E' => 'visible'

        );
        //Поля
        $rowIterator = $sheet->getRowIterator();
        $rowNum = -1;
        foreach($rowIterator as $row) {
            $rowNum++;
            $import_product = array();
            $cellIterator = $row->getCellIterator();
            foreach($cellIterator as $cell) {
                $cellPath = $cell->getColumn();

                if(isset($mysqlColumn[$cellPath]) and !empty($cell->getCalculatedValue()))
                    $import_product[$mysqlColumn[$cellPath]] = trim($cell->getCalculatedValue());
            }
            //if (empty($import_product['price'])){
            //    $import_product['price']=0;
           // }
            if(!empty($import_product['usd_price']))
                $import_product['euro_price']=0;
                //unset($import_product['euro_price']);
            else
                //unset($import_product['usd_price']);
                $import_product['usd_price']=0;
            if((count($import_product) > 0) and (!empty($import_product['articul']))) 
            {
                if(!empty($import_product['articul']))
                    $this->db->where('articul', $import_product['articul']);
               // if(!empty($import_product['barcode']))
                //    $this->db->where('barcode', $import_product['barcode']);
                //$this->db->where('id_category', $category);
                //$this->db->where('id_subcategory', $subcategory);

                $result = $this->db->get('tm_product')->result_array();
                $product_data = $import_product;

                if(count($result) > 0) { //обновляем
                    $product_id = $result[0]['id'];
                    $this->db->where('id', $product_id);
                    $this->db->update('tm_product', $product_data);
                    //echo "Найден-$product_id <br/>";
                } 
                else 
                { //добавляем
                    //$this->db->insert('tm_product', $product_data);
                    //$product_id = $this->db->insert_id();
                }
            }
        }
        //die();

    } catch (Exception $e) {
        unlink($path);
        return $e->getLine() .': '. $e->getMessage();
    }
    unlink($path);
    return false;
}

Все обновляет, все супер, но вот проблема, поле Visible имеет только два значения, 1 или 0. Если в excel 1 то база обновляется нормально, если 0, то он не обновляет.

Не могу понять где тут ошибка?

duddeniska
  • 3,978

0 Answers0