Jump to content
Search In
  • More options...
Find results that contain...
Find results in...
  • Sign Up

Изменение атрибутов товара через бд


Recommended Posts

Добрый день! Помимо интернет-магазина имеется и обычный, приходится обновлять количество товаров на сайте вручную. Синхронизировать кассу с бд пока не вижу смысла, но хотелось бы иметь возможность в пару кликов обновлять, это самое, количество товаров на сайте.

 

Предположим у меня есть массив "Артикулов" связанный с необходимым "Количеством товара". С помощью какого запроса вызывать "Товары" по "Артикулу" и менять им "Количество"? Как это грамотнее организовать: через php админки или напрямую через MySQL?

 

P.S. по форуму копался, ничего не нашел. Но подозреваю, что такая тема должна быть... если так, то ткните пальцем пожалуйста:mellow:

Link to post
Share on other sites

Я предполагаю все должно выполняться через запрос 

UPDATE`таблица товаров` SET `количество`= (SELECT таблица артикулов('артикул') - `новое количество`)

Link to post
Share on other sites

11 минут назад, erikm сказал:

UPDATE`таблица товаров` SET `количество`= (SELECT таблица артикулов('артикул') - `новое количество`)

Вы проверяли такую конструкцию?

 

Где у вас привязка к артикулу

1. создать временную таблицу из нужных значений

 

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

 

UPDATE product p  JOIN tmp_table t ON p.ариткул = t.артикул
SET p.quantity = t.quantity

  • +1 1
Link to post
Share on other sites
1 час назад, chukcha сказал:

Вы проверяли такую конструкцию?

 

Где у вас привязка к артикулу

1. создать временную таблицу из нужных значений

 

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

Вечером освобожусь сделаю,  потом отпишусь. За наводку спасибо.  А как все таки правильнее через php или напрямую? Количество товаров в бд только в одном столбце хранится по умолчанию? 

Link to post
Share on other sites

С помощью запроса, проверил правильно ли я понимал где находятся нужные мне величины. Артикул у меня совпадает с моделью, а id самого атрибута "артикул" равен 4

select 
    p.product_id, 
    d.name,
    p.model,
    p.quantity
from oc_product p
    join oc_product_description d on d.product_id = p.product_id
where p.model = 'Артикул';

Для теста без таблиц такой запрос подойдет?

update oc_product p  
set p.quantity = 'количество'
where p.model = 'Артикул';

Хотелось бы еще сверить равенство модели и артикула, ведь человеческий фактор упускать нельзя:unsure:. Я так понял нужно добавить and с условием равенства. Что-то типо такого?

update oc_product p  
join oc_product_attribute a on a.attribute_id = '4' and a.product_id = p.product_id and a.text = p.model
set p.quantity = 'количество'
where p.model = 'Артикул';

 

Link to post
Share on other sites

Чего?

 

 

Вы поясните что вы хотите..

А то вы сейчас насочиняете запросов...

 

И.. не забудьте!!!!! БЕКАП, БЕКАП, БЕКАП..

 

select 
    p.product_id, 
    d.name,
    p.model,
    p.quantity
from oc_product p
    join oc_product_description d on d.product_id = p.product_id

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

 

Для правильного запроса нужно еще language_id

 

Но ладно, это не совсем важно

 

 

 

 

 

Link to post
Share on other sites
17 минут назад, chukcha сказал:

Чего?

 

 

Вы поясните что вы хотите..

А то вы сейчас насочиняете запросов...

 

И.. не забудьте!!!!! БЕКАП, БЕКАП, БЕКАП..

Бекап само собой :)  Что хочу, написал в первом посте. Но для теста код привел для конкретных значений, а не таблиц. Вот и спрашиваю правильно или нет?

 

19 минут назад, chukcha сказал:

Для правильного запроса нужно еще language_id

На сайте 1 язык

 

P.S. Я конечно пониманию, что эти запросы будут работать. Но вот меня всегда в таких вещах заботит "на сколько хорошо". Поэтому и надеюсь на коментарии местных сторожил 

Link to post
Share on other sites

Где у вас есть массив артикулов?

 

Причем здесь таблица атрибутов?

3 минуты назад, erikm сказал:

Но вот меня всегда в таких вещах заботит "на сколько хорошо"

А пофик, главное чтоб работали..
Ведь у вас это одноразовый запрос..

Конечно, было бы правильно написать оптимальный запрос, быстрый, не нагрузочный, построить план запроса, индексы проставить :)
Потратить на это много времени и чувствовать себя на вершине счастья! мой запрос выполнился за 200 мс, а не оптимизированный выполнялся аж 1 сек...



 

Link to post
Share on other sites
23 часа назад, chukcha сказал:

Где у вас есть массив артикулов?

 

Причем здесь таблица атрибутов?

Все, сделал таблицу :) Заполнил ее данными через .csv

CREATE TABLE tmp_table (
    model varchar(64) NOT NULL,
    quantity int(4) NOT NULL,
    PRIMARY KEY (model)
);

 

Артикулы у товаров заданы в виде "Модели" и Атрибута с id=4. Запрос тогда должен выглядеть так?

update oc_product p  
join oc_product_attribute a on a.attribute_id = '4' and a.product_id = p.product_id and a.text = p.model
join tmp_table t on t.model = p.model
set p.quantity = t.quantity

 

Link to post
Share on other sites

ага похоже

 

Как рекомендация, пишите ключевые слова sql прописными
много времени не потеряете, а читабельность кода выше

 

Ну, разве что  я бы чуть не так строид бы логику..
Но это не важно

UPDATE oc_product p  
JOIN tmp_table t ON t.model = p.model
JOIN oc_product_attribute a ON a.attribute_id = '4' AND a.product_id = p.product_id AND a.text = t.model
SET p.quantity = t.quantity

обратите внимание

 

 a.text = t.model

Т.е. я как бы отсеиваю по t таблице, а не  по p

 

 

  • +1 1
Link to post
Share on other sites

а почему нельзя записать артикул в sku и все?)

Link to post
Share on other sites

11 минут назад, n3bo сказал:

а почему нельзя записать артикул в sku и все?)

 

Нужно было отображение Артикула в виде атрибута с определенным классом, чтобы пользователь не искал информацию по всей форме товара. Поэтому принял такое решение

Link to post
Share on other sites

41 минуту назад, chukcha сказал:

a.text = t.model

Т.е. я как бы отсеиваю по t таблице, а не  по p

Логично, первым действием я ведь уже отсеял по p таблице. Программировать начал с Си, дошел до С#... с открытием магазина пришел к выводу, что нужно еще знание SQL. Запросы не сложные, но все упирается в затраченное время на их обработку. Буду учиться :)

 

Как теперь все это обернуть в php? Я в том плане, что движек ocstore, скорее всего уже имеет встроенные функции работы с бд. Где почитать или покопаться?

На хабра нашел код для загрузки .csv, но нет ли встроенных функций?

Спойлер

function import_csv(
		$table,         // Имя таблицы для импорта
        $afields,         // Массив строк - имен полей таблицы
        $filename,          // Имя CSV файла, откуда берется информация 
                    // (путь от корня web-сервера)
        $delim=',',          // Разделитель полей в CSV файле
        $enclosed='"',      // Кавычки для содержимого полей
        $escaped='\\',          // Ставится перед специальными символами
        $lineend='\\r\\n',       // Чем заканчивается строка в файле CSV
        $hasheader=FALSE){      // Пропускать ли заголовок CSV
    if($hasheader) $ignore = "IGNORE 1 LINES ";
    else $ignore = "";
    $q_import = 
    "LOAD DATA INFILE '".
        $_SERVER['DOCUMENT_ROOT'].$filename."' INTO TABLE ".$table." ".
    "FIELDS TERMINATED BY '".$delim."' ENCLOSED BY '".$enclosed."' ".
    "    ESCAPED BY '".$escaped."' ".
    "LINES TERMINATED BY '".$lineend."' ".
    $ignore.
    "(".implode(',', $afields).")"
    ;
        return mysql_query($q_import);
    }

 

 

Перед загрузкой необходимо очищать tmp_table . Скорее всего как-то так: 

TRUNCATE TABLE tmp_table;

 

Link to post
Share on other sites

1 час назад, erikm сказал:

 

Нужно было отображение Артикула в виде атрибута с определенным классом, чтобы пользователь не искал информацию по всей форме товара. Поэтому принял такое решение

вывести артикул в поле с атрибутами.
дублировать в атрибут

Link to post
Share on other sites

Атрибуты обычно во вкладке, артикул же можно вывести как хочешь и выделить как хочешь. Я делал так:

Название товара (Код - Артикул) 

Link to post
Share on other sites

Если можно, то пожалуйста по существу :lol:  Куда вставлять Артикулы я для себя решил

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Similar Content

    • By Sunser
      Скачать/Купить дополнение Easy code - модуль упрощенного добавления кода
      Easy code - модуль упрощенного добавления кода для Opencart и ocStore.
       
      Расширение подходит и тестировалось на версиях Opencart 2.0, 2.1, 2.2, 2.3 и 3.0
      Так же подойдет для OpencartPro версии 2.1 и 2.3
      Расширение подходит и тестировалось на версиях ocStore 2.1, 2.3 и 3.0
      Расширение тестировалось на официальных версиях, скачанных из официальных сайтов сборок.
      Модуль тестировался по нескольких раз на всех выше указанных версиях сайта. Так же модуль проверялся на ошибки.
       
      -- Установка расширения:
      Есть два способа установки:
      1) Это просто откройте установщик расширений и выберите данное расширение под версию вашей сборки и установите, после чего обновите "Модификаторы", Потом перейдите в раздел Модулей и активируйте его, после чего настройте как вам необходимо.
      Модуль не заменяет никаких файлов.
       
      -- Что может модуль:
      1) Модуль выводит javascript код(<script>*</script>);
      2) Модуль выводит код для стилей(<style>*</style>);
      3) Модуль выводит html код;
      3) Можно по отдельности включать модуль в headere, body или footere
       
      Зачем нужен этот модуль и как он работает?
      Данный модуль упрощает работу с кодом. Например у вас есть скрипт который нужно добавить в head, вам не нужно дергать вашего админа, отвечающего за сайт или программиста, что бы он добавил этот код или убрал. А можете запросто сами сделать за пару минут в этом модуле.
      Или же вам нужно добавить код аналитики на сайт, то тоже самое, открываете этот модуль и добавляете код, сохраняете, после чего код появится в указанном вами месте.
      Если вам надо что бы этот код не отображался на сайте, то вы можете его отключить в модуле.
       
      -- Ошибки:
      Если вы установили модуль, сделали все как указано свыше и модуль не работает или какая та часть кода не выводится, то скорее всего вы меняли свой шаблон и модификатор не находит указанного пути в файле модификатора и не можете сами исправить, в таком случае, обратитесь к автору модуля и он поможет в данном решении.
      Примечание - Модуль не обрабатывает и не выводит php или twig код

      Модуль легкий в настройке.
      Модуль имеет 6 полей:
      3 поля куда вы добавляете код
      3 поля со статусом, включать этот код или нет

      Если вы заметите какие-то неполадки или у вас будет предложение по улучшению самого модуля, пишите в личное сообщения данного сервиса, после чего я вам обязательно отвечу.
       
      Убедительная просьба, если вы заказываете дополнительные платные услуги по модулю, заранее согласуйте с автором, поскольку автор может быть занят или отсутствовать.
      Добавил Sunser Добавлено 29.10.2019 Категория Модули Системные требования Метод активации Без активации Ioncube Loader Нет OpenCart 3.0
      2.3
      2.2
      2.1
      2.0 ocStore 3.0
      2.3
      2.1 OpenCart.Pro, ocShop Opencart.pro 2.3
      Opencart.pro 2.1 Обращение к серверу разработчика Нет  
    • By TimRod
      Скачать/Купить дополнение OCCleaner - очистка и оптимизация
      Описание
      OCCleaner - Это профессиональный инструмент очистки и оптимизации. С его помощью Вы сможете ускорить работу и повысить безопасность Вашего магазина OpenCart!

      DEMO
      Панель администратора: demo/demo | Перейти

      Совместимость с OpenCart и OCStore
      2.2.0.0, 2.3.0.x, 3.0.x.x

      Локализации
      Русский, Английский

      Основные возможности
      - Очистка системного мусора и временных файлов;
      - Поиск и удаление ненужных изображений (умный алгоритм анализа базы данных и файлов OpenCart);
      - Очистка файловой системы от мусора и остаточных файлов;
      - Оптимизация и очистка базы данных;
      - Полный анализ в один клик;
      - Максимальное предоставление информации об обнаруженных объектах;
      - Предоставление инструментов безопасности административной панели;
      - Интуитивно понятный и простой интерфейс;
      - Работает с помощью ajax, без перезагрузки страницы;

      Очистка файловой системы
      - Очистка системного кэша
      - Очистка кэша изображений
      - Очистка кэша VQMOD
      - Очистка файлов журналов
      - Поиск и удаление неиспользуемых изображений
      - Поиск и удаление пустых папок
      - Поиск и удаление неиспользуемых локализаций (языковые файлы)

      Оптимизация базы данных
      - Поиск и удаление неиспользуемых опций
      - Поиск и удаление неиспользуемых атрибутов
      - Поиск и удаление пустых групп атрибутов
      - Поиск и удаление пустых категорий
      - Поиск и удаление товаров без изображений
      - Поиск и удаление просроченных сессий

      Безопасность
      1. Секретная ссылка
      Доступ в административную панель только по секретной ссылке. Пример: http://suite.ru/admin/?key=value.
      Все остальные получат ошибку - 404 (страница не существует).
      2. Блокировка по IP
      Доступ в административную панель только с указанных IP адресов. Все остальные получат ошибку - 403 (Доступ запрещён).
      3. Google Recaptcha v.2
      Защита страницы входа от перебора паролей. В отличии от бесплатных аналогов yе требует дополнительной настройки отдельного модуля Google ReCaptcha и не допускает валидации логина и пароля, пока проверка ReCaptcha не будет пройдена.

      Установка, обновление, активация
      Подробная инструкция по установке, обновлению и активации находится в архиве модуля!

      Системные требования
      - PHP: >= 5.6.
      - Модуль PHP: php_fileinfo.
      - Любой современный браузер с поддержкой ECMAScript5 и выше.
       
      Если у Вашего хостинг-провайдера сильные ограничения по использованию памяти или времени выполнения PHP скрипта, функция поиска неиспользуемых изображений может не работать!

      Лицензия
      - Лицензия на модуль распространяется на 1 домен + 1 поддомен бесплатно.
      - Вы не можете продавать или перепродавать этот модуль без письменного разрешения от автора (TimRod).
      - Вы не можете давать в качестве подарка или распространять этот модуль без письменного разрешения от автора (TimRod).
      - Вы не можете представлять этот модуль как ваш собственный. Пожалуйста уважайте время и труд, которое автор потратил на создание этого модуля.
      - Вы не можете удалять копирайт из файлов модуля от автора (TimRod).
      - Активация происходит только теми способами, которые указаны в инструкции.

      Обратная связь
      Если у Вас появился вопрос, предложение по расширению функционала или Вы нашли ошибку, пишите на e-mail: timrod.v@gmail.com или через систему личных сообщений.
      Добавил TimRod Добавлено 27.08.2019 Категория Модули Системные требования PHP: >= 5.6, Модуль PHP: php_fileinfo, Любой современный браузер с поддержкой ECMAScript5 и выше. Метод активации По запросу в ЛС
      По запросу на почту Ioncube Loader Нет OpenCart 3.0
      2.3
      2.2 ocStore 3.0
      2.3
      2.2 OpenCart.Pro, ocShop Opencart.pro 2.3 Обращение к серверу разработчика Нет  
    • By Kazbek86
      Здравствуйте!
       
      Нужно обновить атрибуты и добавить в БД новые значения атрибутов с сайта Розетка, а также обновить категории. Атрибуты и значения можно взять из ихнего справочника. 
      Версия ocStore 2.3.0.2.3
       
      Категории (*как пример)

      50-60 % категорий уже прописаны на моем сайте, нужно обновить и создать новые.

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

       
      Так вот чтоб иметь возможность выбрать несколько значений атрибутов, использую модуль Product Attribute Value Auto Insert By Sainent
       


       
    • By KardNelum
      Добрый день! Подскажите, пожалуйста, есть ли для Ocstore 2.3 модули всплывающих окон, которые:
      1) имеют разные условия для зарегистрированных и незарегистрированных пользователей? Например, окно с предложением скидки за регистрацию явно не подходит уже зарегистрированным;
      2) имеют разные условия для групп покупателей;
      3) появляются через время или при движении курсора мыши за область сайта. Или при закрытии;
      4) имеют возможность настраивать в модуле функцию всплывающего окна и действие кнопок.
    • By Sunser
      Easy code - модуль упрощенного добавления кода для Opencart и ocStore.
       
      Расширение подходит и тестировалось на версиях Opencart 2.0, 2.1, 2.2, 2.3 и 3.0
      Так же подойдет для OpencartPro версии 2.1 и 2.3
      Расширение подходит и тестировалось на версиях ocStore 2.1, 2.3 и 3.0
      Расширение тестировалось на официальных версиях, скачанных из официальных сайтов сборок.
      Модуль тестировался по нескольких раз на всех выше указанных версиях сайта. Так же модуль проверялся на ошибки.
       
      -- Установка расширения:
      Есть два способа установки:
      1) Это просто откройте установщик расширений и выберите данное расширение под версию вашей сборки и установите, после чего обновите "Модификаторы", Потом перейдите в раздел Модулей и активируйте его, после чего настройте как вам необходимо.
      Модуль не заменяет никаких файлов.
       
      -- Что может модуль:
      1) Модуль выводит javascript код(<script>*</script>);
      2) Модуль выводит код для стилей(<style>*</style>);
      3) Модуль выводит html код;
      3) Можно по отдельности включать модуль в headere, body или footere
       
      Зачем нужен этот модуль и как он работает?
      Данный модуль упрощает работу с кодом. Например у вас есть скрипт который нужно добавить в head, вам не нужно дергать вашего админа, отвечающего за сайт или программиста, что бы он добавил этот код или убрал. А можете запросто сами сделать за пару минут в этом модуле.
      Или же вам нужно добавить код аналитики на сайт, то тоже самое, открываете этот модуль и добавляете код, сохраняете, после чего код появится в указанном вами месте.
      Если вам надо что бы этот код не отображался на сайте, то вы можете его отключить в модуле.
       
      -- Ошибки:
      Если вы установили модуль, сделали все как указано свыше и модуль не работает или какая та часть кода не выводится, то скорее всего вы меняли свой шаблон и модификатор не находит указанного пути в файле модификатора и не можете сами исправить, в таком случае, обратитесь к автору модуля и он поможет в данном решении.
      Примечание - Модуль не обрабатывает и не выводит php или twig код

      Модуль легкий в настройке.
      Модуль имеет 6 полей:
      3 поля куда вы добавляете код
      3 поля со статусом, включать этот код или нет

      Если вы заметите какие-то неполадки или у вас будет предложение по улучшению самого модуля, пишите в личное сообщения данного сервиса, после чего я вам обязательно отвечу.
       
      Убедительная просьба, если вы заказываете дополнительные платные услуги по модулю, заранее согласуйте с автором, поскольку автор может быть занят или отсутствовать.
  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.