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

Добавить новый атрибут всем товарам.


1Andrew1

Recommended Posts

Добрый день.

 

Подскажите, а можно как-нибудь, без особых трудозатрат добавить всем товарам новый атрибут?

 

Например создать атрибут: "Цвет", добавить всем со значением "красный",  а потом "руками" паре товаров поменять, допустим на: белый, желтый и т.д.

 

Версия движка 1.5

Надіслати
Поділитися на інших сайтах


Хоть и косыльно, но что сразу пришло на ум:

 

1. Вывести все id товаров

2. Получить id атрибута

3. Загнать id товаров в excel

4. С помощью "СЦЕПИТЬ" создать полноценный запрос

5. Выполнить запрос

 

Минут 5.

Надіслати
Поділитися на інших сайтах


мАмА дорогая!!! :)

 

Где вас учили удалять гланды через задний проход?

Кому как удобнее и быстрее. Привык работать с прайсами (с Excel), поэтому я бы так сделал) Я же сказал, что костыльно, но работает  :ugeek: А тем более атрибут 1 (процедура разовая)

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


Попробую показать не костыль

 

Но сам запрос - придется склеивать  самим

 

1.

insert into oc_product_attribute (product_id, attribute_id., language_id, `text1)
SELECT ...

2. Это чисто для проверки

SELECT distinct p.product_id, pa.*
FROM oc_product p
LEFT join `oc_product_attribute` pa on p.product_id = pa.product_id
WHERE pa.product_id is null

3.

SELECT distinct p.product_id, NNN_attribute_id, LANGUAGE_ID, 'значение аттрибута
FROM oc_product p
LEFT join `oc_product_attribute` pa on p.product_id = pa.product_id
WHERE pa.product_id is null

AND pa.attribute_id = NNN_attribute_id

AND pa.attribute_id = LANGUAGE_ID

 

 

4. бекап, бекап, бекап

Надіслати
Поділитися на інших сайтах

Эх ладно для 1,5,x

$products = $this->db->query('SELECT * FROM `oc_product`');
foreach($products->rows as $p){
  $this->db->query('INSERT INTO `oc_product_attribute` SET `product_id` = "'.$p['product_id'].'", `attribute_id` = "IDatribute", `language_id` = "id lang", "text" = "Red"');
}

IDatribute - смотриш в oc_attribute_description 

id lang - можеш взять тамже 

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

Попробую показать не костыль

 

Но сам запрос - придется склеивать  самим

 

1.

insert into oc_product_attribute (product_id, attribute_id., language_id, `text1)
SELECT ...

2. Это чисто для проверки

SELECT distinct p.product_id, pa.*
FROM oc_product p
LEFT join `oc_product_attribute` pa on p.product_id = pa.product_id
WHERE pa.product_id is null

3.

SELECT distinct p.product_id, NNN_attribute_id, LANGUAGE_ID, 'значение аттрибута

FROM oc_product p

LEFT join `oc_product_attribute` pa on p.product_id = pa.product_id

WHERE pa.product_id is null

AND pa.attribute_id = NNN_attribute_id

AND pa.attribute_id = LANGUAGE_ID

 

 

4. бекап, бекап, бекап

зачем все так усложнять

Надіслати
Поділитися на інших сайтах

Это вам так кажется, что усложнено!

 

Изучите мой запрос

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

ага, а если уже есть товары с таким атрибутом?

Открою секрет атрибуты можно задавать одни и теже и это будет без ошибки

Надіслати
Поділитися на інших сайтах

Это вам так кажется, что усложнено!

 

Изучите мой запрос

Я понимаю то что ты написал но вот для новачков это будет сложно

Надіслати
Поділитися на інших сайтах

Спрячьте свой секрет в одно место

 

Потом у человека сломается магазин

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

Спрячьте свой секрет в одно место

 

Потом у человека сломается магазин

ради интереса шас добавлю у себя в магазине один товар так и скажу

Надіслати
Поділитися на інших сайтах

а теперь внимательно смотрим как создана таблица

CREATE TABLE IF NOT EXISTS `oc_product_attribute` (
  `product_id` int(11) NOT NULL,
  `attribute_id` int(11) NOT NULL,
  `language_id` int(11) NOT NULL,
  `text` text NOT NULL,
  PRIMARY KEY (`product_id`,`attribute_id`,`language_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

 

Надіслати
Поділитися на інших сайтах

Спрячьте свой секрет в одно место

 

Потом у человека сломается магазин

 Не сломаетса оно просто ошибку выдаст что ключ занят уже.

Надіслати
Поділитися на інших сайтах

 

а теперь внимательно смотрим как создана таблица

CREATE TABLE IF NOT EXISTS `oc_product_attribute` (
  `product_id` int(11) NOT NULL,
  `attribute_id` int(11) NOT NULL,
  `language_id` int(11) NOT NULL,
  `text` text NOT NULL,
  PRIMARY KEY (`product_id`,`attribute_id`,`language_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

Я уже увидил но суть вчтом что оно просто не запишет даные с таким ключом параметров в результате не приведет к поломке а зпрос будет пропущен

Надіслати
Поділитися на інших сайтах

Ссут в горшок

 

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

  • +1 1
Надіслати
Поділитися на інших сайтах

Где один день?

 

Я запрос написал за 2минуты.

 

То что ТС сделал/не сделал - неизвестно.

 

Добрый день,

 

Вот я тут развёл дискуссию, своим простым вопросом.

Спасибо откликнувшимся.

Я бы воспользовался вашим вариантом. Но боюсь, так как знаний 0. А в вашем варианте стоит доп. условие - "Но сам запрос - придется склеивать  самим" как это сделать мне неизвестно, поэтому наверно проще без атрибута обойтись, чем "кривыми руками" сломать свой ИМ и попасть на большие проблемы.

 

Может за небольшое вознаграждение 100-200 руб. в личке решим вопрос(ценой обидеть не хотел, просто не знаю расценок. Но больше платить за данное действие не готов. Проще тогда без доп. атрибута)

Надіслати
Поділитися на інших сайтах


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

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

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

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

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

Вхід

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

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

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

Important Information

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