Answer the question
In order to leave comments, you need to log in
Why is the last field ignored when parsing a CSV file?
There is a script that parses data from a CSV file.
The problem is that the field in the last column is ignored, the script does not see information in it. The
CSV file looks like this:
Категория;"Название товара";Производитель;"Цена товара";"Количество на складе";"Ссылка на фотографию (big)";"Ссылка для покупки товара";"Краткое описание";"Полное описание";"Ссылка на фото (small)";Активность;Идентификатор
Bigger;"Soft";"Orion";45.94;10;http://www.ez.by/uplo1b167c898391dac19.jpg;http://www.ez.by/soft/;"Маленькое описание...";"Большое описание";;on;5663060000
if((($handle = fopen($local, "r")) !== FALSE) && $r) {
$headers = fgetcsv($handle, 0, ';', '"');
if ((int) $this->request->post['pointer'] == '0' ) { // Если это первая цикл - обнуляем количество товара
if (!$this->request->post['reset_qty']) {
$this->model_catalog_csvsynchroniz->resetQantity($shopname);//Обнуляем количество товара
}
}else{
fseek($handle,$this->request->post['pointer']);// Если не первый - выставляем указатель на то место где закончили
}
$k = 0;
while((($data = $FGetCSV->fgetcsv($handle, 30000, ';', '"')) !== FALSE ) && ($k < $inpart_quantity)) {
$num = count($data);
$pairs = array();
$product_model = $data[$this->request->post['model_number']];
if ($product_model != '') {
$p_exist = $this->model_catalog_csvsynchroniz->productExist($product_model, $shopname);//Проверяем существование товара
if ($p_exist->row){// Если существует делаем обновление
$data_old = array();
$product_id = $p_exist->row['product_id'];
$update_data = $this->get_data($headers,$data,$num,$product_model,$data_old,$nacenka,$optprice,$this->request->post);//Меняем поля из файла csv
$this->model_catalog_csvsynchroniz->updateProduct($update_data,$product_id);
}
/* else { // Если нет - создаем новый
$default_data = $this->default_data($product_model);//Заливаем дефолтные данные товара
$add_data = $this->get_data($headers,$data,$num,$product_model,$default_data,$nacenka,$this->request->post);//Меняем поля из файла csv
$this->model_catalog_product->addProduct($add_data);
} */
}
$k++;
}
$pointer = ftell($handle);
$eof_flag = feof($handle) + 0;
fclose($handle);
$json['info'] = sprintf($this->language->get("text_updated"), $k+1);
$json['updated'] = $k;
$json['pointer'] = $pointer;
$json['eof_flag'] = $eof_flag;
$this->cache->delete('product');
} else {
$json['warning'] = $this->language->get('file_error');
}
Answer the question
In order to leave comments, you need to log in
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question