Jump to content
Sign in to follow this  
newjey

Автоматически Артикул из id товара

Recommended Posts

Добрый день.

Подскажите как сделать что бы Артикул товара формировался автоматически и в таком виде как 7894-2345, где 7894 это случайные цифры (от 1 до 1000), а 2345 это id товара?

Спасибо.

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

Я понимаю что не по щелчку пальцев) хотелось бы спросить у знающих как именно?

Share this post


Link to post
Share on other sites

в самом начале видим:

public function addProduct($data) {
$this->db->query("INSERT INTO " . DB_PREFIX . "product SET model = '" . $this->db->escape($data['model']) . "', sku = '" . $this->db->escape($data['sku']) . "', upc = '" . $this->db->escape($data['upc']) . "', ean = '" . $this->db->escape($data['ean']) . "', jan = '" . $this->db->escape($data['jan']) . "', isbn = '" . $this->db->escape($data['isbn']) . "', mpn = '" . $this->db->escape($data['mpn']) . "', location = '" . $this->db->escape($data['location']) . "', quantity = '" . (int)$data['quantity'] . "', minimum = '" . (int)$data['minimum'] . "', subtract = '" . (int)$data['subtract'] . "', stock_status_id = '" . (int)$data['stock_status_id'] . "', date_available = '" . $this->db->escape($data['date_available']) . "', manufacturer_id = '" . (int)$data['manufacturer_id'] . "', shipping = '" . (int)$data['shipping'] . "', price = '" . (float)$data['price'] . "', points = '" . (int)$data['points'] . "', weight = '" . (float)$data['weight'] . "', weight_class_id = '" . (int)$data['weight_class_id'] . "', length = '" . (float)$data['length'] . "', width = '" . (float)$data['width'] . "', height = '" . (float)$data['height'] . "', length_class_id = '" . (int)$data['length_class_id'] . "', status = '" . (int)$data['status'] . "', tax_class_id = '" . $this->db->escape($data['tax_class_id']) . "', sort_order = '" . (int)$data['sort_order'] . "', date_added = NOW()");

$product_id = $this->db->getLastId();

// - добавляем 2 строки
$model = rand ( 1000 , 9999 ) . "-" . $product_id;
$this->db->query("UPDATE " . DB_PREFIX . "product SET model = '" . $model . "' WHERE product_id = '" . (int)$product_id . "');

вставка для admin/model/catalog/product.php

Share this post


Link to post
Share on other sites

Сделал sql запрос UPDATE product SET sku=product_id, прописались всем товарам Артикулы в виде id товара, но есть маленький неудобный момент, планируется поиск по сайту по Артикулу,а у первых товаров артикулы одно и двух значные и при поиске выдаёт кучу товаров в который встречаются эти цифры, отсюда и было придумано использовать помимо id товара ещё и дополнительный цифровой код.

Как правильно сделать запрос UPDATE product SET sku=рандомное значение от 1 до 1000 - product_id ?

И как прописать данный запрос для автоматического  формирования при добавлении нового товара?

Share this post


Link to post
Share on other sites

Хотите уникальный sku на основе product_id?

 

UPDATE product SET sku=md5(product_id)

:)

Share this post


Link to post
Share on other sites

Хотите уникальный sku на основе product_id?

 

UPDATE product SET sku=md5(product_id)

:)

Как потом этот вариант использовать для автогенерации для новых товаров?

Share this post


Link to post
Share on other sites

в самом начале видим:

public function addProduct($data) {

$this->db->query("INSERT INTO " . DB_PREFIX . "product SET model = '" . $this->db->escape($data['model']) . "', sku = '" . $this->db->escape($data['sku']) . "', upc = '" . $this->db->escape($data['upc']) . "', ean = '" . $this->db->escape($data['ean']) . "', jan = '" . $this->db->escape($data['jan']) . "', isbn = '" . $this->db->escape($data['isbn']) . "', mpn = '" . $this->db->escape($data['mpn']) . "', location = '" . $this->db->escape($data['location']) . "', quantity = '" . (int)$data['quantity'] . "', minimum = '" . (int)$data['minimum'] . "', subtract = '" . (int)$data['subtract'] . "', stock_status_id = '" . (int)$data['stock_status_id'] . "', date_available = '" . $this->db->escape($data['date_available']) . "', manufacturer_id = '" . (int)$data['manufacturer_id'] . "', shipping = '" . (int)$data['shipping'] . "', price = '" . (float)$data['price'] . "', points = '" . (int)$data['points'] . "', weight = '" . (float)$data['weight'] . "', weight_class_id = '" . (int)$data['weight_class_id'] . "', length = '" . (float)$data['length'] . "', width = '" . (float)$data['width'] . "', height = '" . (float)$data['height'] . "', length_class_id = '" . (int)$data['length_class_id'] . "', status = '" . (int)$data['status'] . "', tax_class_id = '" . $this->db->escape($data['tax_class_id']) . "', sort_order = '" . (int)$data['sort_order'] . "', date_added = NOW()");

$product_id = $this->db->getLastId();

// - добавляем 2 строки

$model = rand ( 1000 , 9999 ) . "-" . $product_id;

$this->db->query("UPDATE " . DB_PREFIX . "product SET model = '" . $model . "' WHERE product_id = '" . (int)$product_id . "');

вставка для admin/model/catalog/product.php

Делаю по примеру для sku таким образом

$sku = rand ( 1000 , 9999 ) . "-" . $product_id;

$this->db->query("UPDATE " . DB_PREFIX . "product SET sku = '" . $sku . "' WHERE product_id = '" . (int)$product_id . "');

Выдаёт белую страницу в админке.

Share this post


Link to post
Share on other sites

а $product_id определен?

Share this post


Link to post
Share on other sites

а $product_id определен?

В смысле?

Share this post


Link to post
Share on other sites

у меня он возникает как id последней добавленной записи в таблицу: $product_id = $this->db->getLastId();

а у вас?

Share this post


Link to post
Share on other sites

у меня он возникает как id последней добавленной записи в таблицу: $product_id = $this->db->getLastId();

а у вас?

У меня так же как у Вас

public function addProduct($data) {

$this->db->query("INSERT INTO " . DB_PREFIX . "product SET model = '" . $this->db->escape($data['model']) . "', sku = '" . $this->db->escape($data['sku']) . "', upc = '" . $this->db->escape($data['upc']) . "', location = '" . $this->db->escape($data['location']) . "', quantity = '" . (int)$data['quantity'] . "', minimum = '" . (int)$data['minimum'] . "', subtract = '" . (int)$data['subtract'] . "', stock_status_id = '" . (int)$data['stock_status_id'] . "', date_available = '" . $this->db->escape($data['date_available']) . "', manufacturer_id = '" . (int)$data['manufacturer_id'] . "', shipping = '" . (int)$data['shipping'] . "', price = '" . (float)$data['price'] . "', points = '" . (int)$data['points'] . "', weight = '" . (float)$data['weight'] . "', weight_class_id = '" . (int)$data['weight_class_id'] . "', length = '" . (float)$data['length'] . "', width = '" . (float)$data['width'] . "', height = '" . (float)$data['height'] . "', length_class_id = '" . (int)$data['length_class_id'] . "', status = '" . (int)$data['status'] . "', tax_class_id = '" . $this->db->escape($data['tax_class_id']) . "', sort_order = '" . (int)$data['sort_order'] . "', date_added = NOW()");

$product_id = $this->db->getLastId();

Share this post


Link to post
Share on other sites

Я может че не понимаю. Артикул уникальный. По артикулу можно товар в гугле искать и тп. Это не просто набор цифер которые можно сгенерировать модулем.

Share this post


Link to post
Share on other sites

Как потом этот вариант использовать для автогенерации для новых товаров?

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

Share this post


Link to post
Share on other sites

Я может че не понимаю. Артикул уникальный. По артикулу можно товар в гугле искать и тп. Это не просто набор цифер которые можно сгенерировать.

Артикул используется внутри магазина, вы наверное имеете ввиду код производителя товара?Так он выводится у меня как Модель товара.

Share this post


Link to post
Share on other sites

У меня так же как у Вас

public function addProduct($data) {

$this->db->query("INSERT INTO " . DB_PREFIX . "product SET model = '" . $this->db->escape($data['model']) . "', sku = '" . $this->db->escape($data['sku']) . "', upc = '" . $this->db->escape($data['upc']) . "', location = '" . $this->db->escape($data['location']) . "', quantity = '" . (int)$data['quantity'] . "', minimum = '" . (int)$data['minimum'] . "', subtract = '" . (int)$data['subtract'] . "', stock_status_id = '" . (int)$data['stock_status_id'] . "', date_available = '" . $this->db->escape($data['date_available']) . "', manufacturer_id = '" . (int)$data['manufacturer_id'] . "', shipping = '" . (int)$data['shipping'] . "', price = '" . (float)$data['price'] . "', points = '" . (int)$data['points'] . "', weight = '" . (float)$data['weight'] . "', weight_class_id = '" . (int)$data['weight_class_id'] . "', length = '" . (float)$data['length'] . "', width = '" . (float)$data['width'] . "', height = '" . (float)$data['height'] . "', length_class_id = '" . (int)$data['length_class_id'] . "', status = '" . (int)$data['status'] . "', tax_class_id = '" . $this->db->escape($data['tax_class_id']) . "', sort_order = '" . (int)$data['sort_order'] . "', date_added = NOW()");

$product_id = $this->db->getLastId();

Была допущена ошибка в коде:

$sku = rand ( 1000 , 9999 ) . "-" . $product_id;
$this->db->query("UPDATE " . DB_PREFIX . "product SET sku = '" . $sku . "' WHERE product_id = '" . (int)$product_id . "'");
Теперь всё работает)

Share this post


Link to post
Share on other sites

Артикул используется внутри магазина, вы наверное имеете ввиду код производителя товара?Так он выводится у меня как Модель товара.

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Вы всё верно говорите, только у меня этот код производителя выведен через поле в товаре Модель, этот же код и соответствует коду модели, например телефон Samsung модель: GT36. Но мне в добавок нужен и циферный простой уникальный код, который с лёгкостью сможет продиктовать клиент по телефону, потому как номер модели иногда может быть типа HZ65rB_67Ty-5 и это доставит трудностей как для клиента так и для менеджера.

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

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

Вы что не читаете что я пишу? Я же говорю что то что выдаётся заводом производителем у меня и так выводится (Модель товара), мне нужен уникальный циферный код товара внутри магазина (Артикул).

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

в целом вы правы) Но ТС sku нужен для внутрискладового учета и удобства быстрого заказа через форму или по телефону. посиотрите например на крупные инет-гипермаркеты техники - тот же связной или м-видео... в товаре там есть и внутренний артикул на странице и просто название модели и правильный артикул и т.д....

Share this post


Link to post
Share on other sites

Вы всё верно говорите, только у меня этот код производителя выведен через поле в товаре Модель, этот же код и соответствует коду модели, например телефон Samsung модель: GT36. Но мне в добавок нужен и циферный простой уникальный код, который с лёгкостью сможет продиктовать клиент по телефону, потому как номер модели иногда может быть типа HZ65rB_67Ty-5 и это доставит трудностей как для клиента так и для менеджера.

Вы знаете что даже Самсунги телефоны идут поддельные из Китая если цена дешевая. Я купил один раз по ибею, деньги вернули.

В новом телефоне под стеклом камеры было пол кило пыли. Грязные твари. Я несколько раз нарывался на покупку китайской подделки, всегда привлекала цена. Покупал планшет, кроссовки телефон. Раза 3-4 не более.

 

Смотрите, они вам могут такого дерьма прислать,,,

Share this post


Link to post
Share on other sites

Со своим складом сами разбирайтесь. Если это нормальный товар то на упаковке будет куча инфы, если подделка то вся инфа будет одинаковая.

Share this post


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
You are posting as a guest. If you have an account, please sign in.
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.

Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×

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.