Перейти к содержанию
Официальный форум поддержки Simpla

Синхронизация с торгсофт почти готовое решение. Помогите


Рекомендуемые сообщения

Скрипт полностью рабочий только не обновляет $product. И если большое количество товаров то выдает 502 ошибку. помогите решить с обновлением $product

 

<?php
require_once('api/Simpla.php');
$simpla = new Simpla();

//print $simpla->settings->site_name;

$file_handle = fopen("TSGoods.trs", "r");
fgets($file_handle);
while (!feof($file_handle)) {
   $line = fgets($file_handle);
   $prodarr = array();
   $prodarr = explode(";",$line);

   if (COUNT($prodarr) < 5)
		array_unshift($prodarr, "");
   $prodarr[0] = str_ireplace('"',"",$prodarr[0]);
   $prodarr[2] = str_ireplace('"',"",$prodarr[2]);
   $prodarr[1] = intval($prodarr[1]);
   $prodarr[4] = trim($prodarr[4]);
   $prodarr[3] = str_replace(',','.',$prodarr[3]);
   $prodarr[5] = str_ireplace('"',"",$prodarr[5]);
   $prodarr[6] = str_ireplace('"',"",$prodarr[0]);

	list($prodarr[6],) = explode(',',$prodarr[6]);
			// Если задан бренд
	if(!empty($prodarr[0]))
	{
			// Найдем его по имени
			$simpla->db->query('SELECT id FROM __brands WHERE name=?',  $prodarr[6]);
			if(!$brand_id = $simpla->db->result('id'))
				// Создадим, если не найден
				$brand_id = $simpla->brands->add_brand(array('name'=>$prodarr[6], 'meta_title'=>$prodarr[6], 'meta_keywords'=>$prodarr[6], 'meta_description'=>$prodarr[6]));
	}
			$query = $simpla->db->placehold('SELECT id FROM __variants WHERE sku = ? LIMIT 1', $prodarr[1]);
			$simpla->db->query($query);
			$result = $simpla->db->result('id');
			$query = $simpla->db->placehold('SELECT id FROM __products WHERE id = ? LIMIT 1', $result['id']);
			$simpla->db->query($query);
			$product_result = $simpla->db->result('id');
			if($result)
			{
				$variant = array();
				$variant['sku'] = $prodarr[1];
				$variant['price'] = $prodarr[3];
				$variant['stock'] = $prodarr[4];
				$product = array();
				$product['bracode'] = $prodarr[5];
				if(!empty($variant))
					$simpla->variants->update_variant($result['id'], $variant);
				if(!empty($product))
					$simpla->products->update_product($product_result, $product);
			}
			else
			{
				$product = array();
				$product['name'] = $prodarr[2];
				$product['bracode'] = $prodarr[5];
				$product['brand_id'] = $brand_id;
				$product['url'] = $prodarr[1]."".'art';
				$product['id'] = $simpla->products->add_product($product);
				$variant = array();
				$variant['sku'] = (string)$prodarr[1];
				$variant['price'] = $prodarr[3];
				$variant['stock'] = $prodarr[4];
				$variant['product_id'] = $product['id'];
			if(!empty($variant))
					$simpla->variants->add_variant($variant);
			}
}
fclose($file_handle);
?>

 

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

Скрипт полностью рабочий только не обновляет $product.

Надо проверять SQL-запросы. Вероятно, какое-то обязательное поле отсутствует...

И если большое количество товаров то выдает 502 ошибку. помогите решить с обновлением $product

Ресурсов хостинга не хватает, видимо.

Если не сможете решить вопрос с хостингом, то надо скрипт переписывать, чтоб обрабатывал большой файл порциями...

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

Посмотрел на Ваш скрипт повнимательнее.
Это не "почти готовое решение", это совсем не решение.

 

Автор скрипта использовал, похоже, стандартный скрипт импорта Simpla, упростил его до предела и при этом наляпал массу ошибок. Тривиальные ошибки довольно быстро видны невооруженным взглядом.

Например,

1.оператор

$simpla->products->update_product($product_result, $product);

обновляет только штрихкод товара, но не обновляет цену и кол-во.

2. Запрос, вычисляющий $product_result - почти полная бессмыслица,  за такое Остап Бендер в детстве убивал из рогатки...

 

Думаю, Вам стоит предъявить претензии автору.

Изменено пользователем Kors
Ссылка на сообщение
Поделиться на другие сайты
$simpla->products->update_product($product_result, $product);
 

это я уже дописывал.

В начале этого не было. Были только варианты. В том то и проблема что бы обновить штрихкоды

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

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
×
×
  • Создать...