Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Игнорируется последнее поле при разборе CSV файла


Recommended Posts

Есть скрипт, который разбирает из 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');

				}

 

Змінено користувачем Evgenka
Надіслати
Поділитися на інших сайтах


Автор модуля на связь не выходит, последний раз заходил очень давно, поэтому попрошу помощи тут:

информация из последнего столбца csv фала никак не хочет читаться. У меня в последнем столбце находится артикул, по которому проверяется наличие товара и далее товар либо обновляется, либо добавляется. Обновляется только один товар, артикул которого записан самым последним в файле. 

Если за этим столбцом добавить любой символ, например кавычки " - все срабатывает на отлично. Как исправить?

Змінено користувачем Evgenka
Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.