Jump to content

Перебор названий всех товаров на сайте для их редактирования


Go to solution Solved by mishanya,

Recommended Posts

Хочу написать скрипт для перебора всех товаров на сайте и редактирования у них  названий.

 

Как перебирать товары вроде понял. А как установить новое значение для названия у товара не смог.

 

Вот мой овнокод:

<?php 
require_once('/var/www/site.ru/api/Simpla.php');
$simpla = new Simpla();
$filter = array();

// Ограничение по количеству вывода товаров. 
// Товаров на сайте более 400к и перебрать в цикле все не получается из-за 502 ошибки (вероятно в апачи стоит ограничение по времени выполнения скрипта)
// поэтому временно поставил лимит в 1000 товаров
$filter['limit'] = 1000;

foreach ($simpla->products->get_products($filter) as $product) {
	$variants = $simpla->variants->get_variants(array('product_id'=>$product->id));
	$product_sku = $variants[0]->sku; //артикул товара
	$product_name = $product->name;   //название товара

	// Проверяем, если название содержит артикул (sku), то удаляем его
	if(strpos($product_name, $product_sku) !== false) {

		//Новое название без артикула
		$new_product_name = trim(str_replace($product_sku, '', $product_name));

		//Применить новое название для товара
		// как это можно сделать?
		
	}
}

Подскажите люди добрые как можно это сделать.

Edited by MalishBob
Link to post
Share on other sites
  • Solution

если вам нужно просто удалить из названия артикул, сделайте просто запрос в базу и не стройте огород

 

UPDATE s_products p
INNER JOIN s_variants v on p.id = v.product_id AND v.position=(SELECT MIN(position) FROM s_variants WHERE product_id=p.id LIMIT 1)
SET p.name = REPLACE(p.name, v.sku, '');
Link to post
Share on other sites

Попробуйте:

Спасибо большое! Теперь буду знать) Наверное, действительно, лучше прямым запросом как пишет Мишаня, так быстрей отработает скрипт. 

 

 

если вам нужно просто удалить из названия артикул, сделайте просто запрос в базу и не стройте огород

 

UPDATE s_products p
INNER JOIN s_variants v on p.id = v.product_id AND v.position=(SELECT MIN(position) FROM s_variants WHERE product_id=p.id LIMIT 1)
SET p.name = REPLACE(p.name, v.sku, '');

Благодарю) 

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...