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

Генерация категорий и товаров в phpMyAdmin.


Recommended Posts

Следующий SQL-запрос позволит сгенерировать любое количество категорий товаров для тестирования магазина.

Единственное, у пользователя БД должен быть доступ к процедурам.

 

Запрос написан под opencart, при желании можете переделать под ocstore.

DROP PROCEDURE IF EXISTS `random_category`;
DELIMITER $$
CREATE PROCEDURE `random_category` (IN `counter` INT(3), IN `subcat` INT(3), IN `product` INT(4))
BEGIN
    DECLARE category_id int(11);
    DECLARE subcat_id int(11);
    DECLARE product_id int(11);
    DECLARE subcat_counter int(11);
    DECLARE product_counter int(11);
    DECLARE empty_col varchar(11);

    DECLARE parent_id int(11);
    DECLARE top tinyint(1);
    DECLARE top_subcat tinyint(1);
    DECLARE column_col tinyint(1);
    DECLARE sort_order int(3);
    DECLARE status tinyint(1);
    DECLARE date_added datetime;
    DECLARE date_modified datetime;

    DECLARE language_id int(11);
    DECLARE name_col varchar(255);
    DECLARE subcat_name varchar(255);
    DECLARE product_name varchar(255);
    DECLARE description text;
    DECLARE product_description text;
    DECLARE meta_title varchar(255);
    DECLARE meta_description varchar(255);
    DECLARE meta_keyword varchar(255);

    DECLARE store_id int(11);

    SET category_id = 1;
    SET product_id = 1;

    SET empty_col = '';
    SET parent_id = 0;
    SET top = 1;
    SET top_subcat = 0;
    SET column_col = 6;
    SET sort_order = 0;
    SET status = 1;
    SET date_added = NOW();
    SET date_modified = NOW();

    SET language_id = 1;

    SET store_id = 0;

    main_loop: WHILE category_id < counter DO
        SET name_col = CONCAT_WS(' ', 'Category', category_id);
        SET description = CONCAT_WS(' ', 'Lorem ipsum dolor si amet', category_id);
        SET meta_title = CONCAT_WS(' ', 'meta_title', category_id);
        SET meta_description = CONCAT_WS(' ', 'meta_description', category_id);
        SET meta_keyword = CONCAT_WS(' ', 'meta_keyword', category_id);

        INSERT INTO oc_category VALUES (category_id, empty_col, parent_id, top, column_col, category_id, status, date_added, date_modified);
        INSERT INTO oc_category_description VALUES (category_id, language_id, name_col, description, meta_title, meta_description, meta_keyword);
        INSERT INTO oc_category_to_store VALUES (category_id, store_id);

          SET subcat_id = category_id + 1;
          SET subcat_counter = category_id + subcat;

          subcat_loop: WHILE subcat_id < subcat_counter DO
                    SET name_col = CONCAT_WS(' ', 'SubCategory', subcat_id);
                    INSERT INTO oc_category VALUES (subcat_id, empty_col, category_id, top_subcat, column_col, subcat_id, status, date_added, date_modified);
                    INSERT INTO oc_category_description VALUES (subcat_id, language_id, name_col, description, meta_title, meta_description, meta_keyword);
                    INSERT INTO oc_category_to_store VALUES (subcat_id, store_id);

                        SET product_counter = product_id + product;
                        product_loop: WHILE product_id < product_counter DO

                              SET product_name = CONCAT_WS(' ', 'Product', product_id);
                              SET product_description = CONCAT_WS(' ', 'Lorem ipsum dolor si amet', product_id);

                              INSERT INTO oc_product
                                (product_id, model, sort_order, status, date_added, date_modified)
                                VALUES
                                (product_id, product_id, product_id, status, date_added, date_modified);

                              INSERT INTO oc_product_description
                                (product_id, language_id, name, description, meta_title, meta_description)
                                VALUES
                                (product_id, language_id, product_name, product_description, product_name, product_name);

                              INSERT INTO oc_product_to_category VALUES (product_id, subcat_id);
                              INSERT INTO oc_product_to_store VALUES (product_id, store_id);

                              SET product_id = product_id + 1;

                        END WHILE product_loop;

                    SET subcat_id = subcat_id + 1;
          END WHILE subcat_loop;

        SET category_id = subcat_id + 1;

    END WHILE main_loop;
END;$$
DELIMITER ;

На видео - пример.

 

Генерируется ВСЕГО 400 категорий,

Родительские категории разбиты на подкатегории по 40штук

В каждой подкатегории 50 товаров

итого выходит (400-(400/40))*50 = 19500 товаров

 

товары и категории перед выполнением процедуры нужно все удалить

 

 

переменные в процедуру можете подставлять любые

 

Будьте осторожны, не вводите слишком большие значения, я по ошибке сгенерил 5 000 000 товаров, сервер завис на 5 минут  :ugeek:

Змінено користувачем pashast
  • +1 14
Надіслати
Поділитися на інших сайтах

pashast спасибо, вот только недавно подумал базу создать на "миллион" для тестов. Думал уже писать скрипт

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

Единственное для чистоты эксперимента должна быть база пустая по крайней мере в таблицах категорий и товаров + язык с id = 1.

Тоже отложил, спс

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

Два лайка этому господину!

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

  • 4 months later...

pashast спасибо, вот только недавно подумал базу создать на "миллион" для тестов. Думал уже писать скрипт

 

У меня живая-рабочая есть )

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

  • 1 month later...
  • 2 years later...
2 часа назад, btrotsky сказал:

 

Так же интерисует, поделитесь?)

Коммерческая живая рабочая база. Если бы она была ваша, как бы вам подобное "поделитесь"  понравилось?

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

  • 1 year later...
В 17.02.2016 в 00:17, pashast сказав:

Запрос написан под opencart, при желании можете переделать под ocstore.

Жаль конечно что только под opencart.

Хотелось бы попробовать такое на ocstore-2.3

Желание есть, возможности сделать нет :(

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

  • 1 year later...

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

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

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

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

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

Вхід

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

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

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

×
×
  • Створити...

Important Information

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