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

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

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

 

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

 

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

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


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

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

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

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


Ссылка на сообщение
Поделиться на другие сайты
11 минут назад, erikm сказал:

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

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

 

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

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

 

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

 

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

  • +1 1

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


Ссылка на сообщение
Поделиться на другие сайты
1 час назад, chukcha сказал:

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

 

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

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

 

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

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

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


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

С помощью запроса, проверил правильно ли я понимал где находятся нужные мне величины. Артикул у меня совпадает с моделью, а 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 = 'Артикул';

 

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


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

Чего?

 

 

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

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

 

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

 

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

 

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

 

 

 

 

 

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


Ссылка на сообщение
Поделиться на другие сайты
17 минут назад, chukcha сказал:

Чего?

 

 

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

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

 

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

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

 

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

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

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

 

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

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


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

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

 

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

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

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

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

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



 

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


Ссылка на сообщение
Поделиться на другие сайты
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

 

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


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

ага похоже

 

Как рекомендация, пишите ключевые слова 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

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


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

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

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


Ссылка на сообщение
Поделиться на другие сайты
11 минут назад, n3bo сказал:

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

 

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

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


Ссылка на сообщение
Поделиться на другие сайты
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;

 

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


Ссылка на сообщение
Поделиться на другие сайты
1 час назад, erikm сказал:

 

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

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

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


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

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

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

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


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

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

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


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

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

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

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

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

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

Войти

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

Войти

  • Похожий контент

    • От vlad9bu
      Доброго времени суток, уважаемые форумчане.
       
      Есть у меня одна задача, нужно "сверстать" в шаблоне Journal 3 что-то похожее на https://www.victoriassecret.com/ 
       
      Работы начаты, понемногу продвигаются, но нужно ускорить этот процесс. Ищу человека для командной работы над проектом. Будет выделяться участок работы, к примеру "сделать футер", "добавить категории" и т.д. Что бы быстрее закончить проект. 
       
      Ищу общительного и адекватного. По всем вопросам пишите в Телеграм @vlad9bu. 
       
      После этого будет еще один проект. Надеюсь на сотрудничество долгосрочное.
       
      Прошу хейтеров и людей желающих удачи с этим шаблоном проходить мимо, спасибо за понимание
       
      Жду ваши заявки!
       
       
    • От theplastique
      1 499.00 руб
      Скачать/Купить дополнение


      TopAuto - адаптивный шаблон интернет магазина автозапчастей и автотоваров
      Каждому купившему шаблон мы гарантируем БЕСПЛАТНУЮ консультацию и поддержку. Ежедневно мы работаем над пакетным улучшением шаблона, по этому не исключено, что стоимость шаблона будет увеличиваться. Для тех кто купил шаблон обновления бесплатно, без зависимости за какую сумму он приобрел шаблон у нас.
      Стоимость шаблона 1499 руб (первый месяц продаж, после будет подорожание)
      Лицензия: Шаблон реализуется по принципу "1 покупатель – 1 домен".
      Демо главной страницы
      Демо страницы категории
      Демо страницы товара
      Демо админпанели (логин и пароль demo)
       
      TopAuto - универсальное решение для интернет магазинов автомобильной тематики. 3 различных варианта оформления, и гибкая настройка темы позволяют создать интернет магазин автозапчастей и других товаров автомобильной тематики соответствующий вашим требованиям.
      Адаптивная и кроссбраузерная верстка присутствует, по этому ваш сайт будет корректно отображаться на всех устройствах и браузерах.
       
      Помимо стандартного функционала opencart шаблон обладает рядом преимуществ:
      3 стиля шаблона (вы покупаете 3 шаблона по цене одного): 2 варианта меню (горизонтальное и вертикальное) Гибкая настройка шапки и подвала сайта: Модуль категорий с расширенным функционалом; Модуль слайдшоу; Модуль информационные блоки; Модуль подписка на новости; 3 варианта  



      Добавил theplastique Добавлено 24.10.2018 Категория Платные шаблоны Системные требования Сайт разработчика Старая цена 2499 Метод активации По запросу в ЛС
      По запросу на почту
      По скайпу
      По емейлу Ioncube Loader Требуется OpenCart 2.3 ocStore 2.3 OpenCart.Pro, ocShop  
    • От theplastique
      Каждому купившему шаблон мы гарантируем БЕСПЛАТНУЮ консультацию и поддержку. Ежедневно мы работаем над пакетным улучшением шаблона, по этому не исключено, что стоимость шаблона будет увеличиваться. Для тех кто купил шаблон обновления бесплатно, без зависимости за какую сумму он приобрел шаблон у нас.
      Стоимость шаблона 1499 руб (первый месяц продаж, после будет подорожание)
      Лицензия: Шаблон реализуется по принципу "1 покупатель – 1 домен".
      Демо главной страницы
      Демо страницы категории
      Демо страницы товара
      Демо админпанели (логин и пароль demo)
       
      TopAuto - универсальное решение для интернет магазинов автомобильной тематики. 3 различных варианта оформления, и гибкая настройка темы позволяют создать интернет магазин автозапчастей и других товаров автомобильной тематики соответствующий вашим требованиям.
      Адаптивная и кроссбраузерная верстка присутствует, по этому ваш сайт будет корректно отображаться на всех устройствах и браузерах.
       
      Помимо стандартного функционала opencart шаблон обладает рядом преимуществ:
      3 стиля шаблона (вы покупаете 3 шаблона по цене одного): 2 варианта меню (горизонтальное и вертикальное) Гибкая настройка шапки и подвала сайта: Модуль категорий с расширенным функционалом; Модуль слайдшоу; Модуль информационные блоки; Модуль подписка на новости; 3 варианта  



    • От dbln9
      Подскажите как изменить размер блока изображения в карточке товара (сделать квадратным), а так же убрать границы (поля). В настройках админки это сделать невозможно.

    • От piklas
      Доброго времени суток!
      При создании скидки и настройки округления до 0 знаков после запятой на сайте и в админке отображаются круглые цифры, например сумма без скидки 127 рублей, -2% скидки получаем округленную сумму 124 рубле. При создании счета у клиента отображается сумма правильная-округленна 124 рубля, а в базе данных записывается сумма 124,46 рублей, то есть с копейками.

      А теперь вопрос, как сделать что бы округление происходило и в цене на сайте и в базе данных?
  • Последние посетители   0 пользователей онлайн

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

×

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

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