Перейти к содержанию
Evgenka

Игнорируется последнее поле при разборе 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');

				}

 

Изменено пользователем Evgenka

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

Изменено пользователем Evgenka

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.