@Evgenka1

Почему игнорируется последнее поле при разборе CSV файла?

Есть скрипт, который разбирает из CSV файла данные.

Проблема в том, что поле в последнем столбце игнорируется, скрипт не видит в нем информации

CSV фал выглядит следующим образом:
Категория;"Название товара";Производитель;"Цена товара";"Количество на складе";"Ссылка на фотографию (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');

				}
  • Вопрос задан
  • 79 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы