AlexCoder

[Решено] Добавление товаров прямиком через БД

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

AlexCoder    1

Всем привет. Если добавлять товары в магазин напрямую через БД, то достаточно ли писать данные только в две таблицы — "product" и "product_description"? Или так что-то сломать можно?

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


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

нет, как минимум еще нужно product_to_category и product_to_story и это при условии что вам не нужны опции, атрибуты, скидки, акции, доп.изображения, загрузки, теги итд.

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


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

А если в эти 2 писать — итого получается 4 таблицы — будут товары корректно добавляться? Пусть без тэгов и без атрибутов, но чтобы корректно добавлялись.

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


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

Вроде как должно нормально работать, но я не пробовал, поэтому 100% гарантии дать не могу, возможно еще какая-то таблица задействована.

Попробуйте и будете знать наверняка.

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


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

Никак не могу сообразить как добавить запись в `product_description`.

 

Делаю так:

mysql_query("INSERT INTO `product_description` VALUES ($next_id, 1, '$name', '$description', '', '', '', '', ''),
                                                      ($next_id, 2, '$name', '$description', '', '', '', '', '')");

Тем же принципом делаю insert новой записи в `product`, там всё проходит нормально. А с `product_description` получаю ошибку: «Duplicate entry '67-1' for key 'PRIMARY'». В Google искал, темы с ответами находил, но не понимаю, что именно сделать с этой таблицей в OpenCart.

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


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

Там первичный ключ по 2-м полям: product_id и language_id. Нельзя чтобы было 2 записи с одинаковым product_id и language_id.

Если вы получаете ошибку dublicate entry значить в базе уже есть такая запись.

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


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

Нельзя чтобы было 2 записи с одинаковым product_id и language_id.

 

Там изначально у демо-товара каждой записи по две штуки и каждые две штуки имеют одинаковый `product_id`. :-\

Различаются только языком — 1 или 2.

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


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

Нельзя чтобы было 2 записи с одинаковым product_id И language_id.

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


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

sv2109, я всё равно не понимаю.
Мой скрипт добавляет две записи, у этих двух записей одинаковый product_id, но разный language_id. Это должно пройти? В соответствии с тем, что я вижу у демо-товаров, — должно. Не могли бы вы ткнуть меня носом в то, что именно не так?

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


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

Откройте phpMyAdmin и посмотрите на таблицу. Возможно строчка с таким же product_id и language_id уже есть в базе. Попробуйте ваш sql запрос выполнить в phpMyAdmin, там есть соответствующая вкладка.

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


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

Вот я пытаюсь добавить данные в phpmyadmin (ошибка после выполнения наверху, обведена красным):

KHDr9Q5.png

Чтобы видеть все product_id отсортированными:

R22sP6f.png

Листаем вниз и видим, что последний ID — 45:

aMmcBA7.png

А я пытаюсь добавить ID 67. То есть для него место свободно.

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


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

45 точно последний? Или последний только на первой странице?..

Только что специально у себя проверил на 1.5.3.1, "INSERT INTO `product_description`

VALUES ( 100, 1, 'aaa', 'bbb', '', '', '', '' ) , ( 100, 2, 'aaa', 'bbb', '', '', '', '' )"

прекрасно исполняется, новые строки добавлены.

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


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

Да, там в description не все строки отображены были... Моя осечка. :-) Сейчас всё получилось, спасибо.

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


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

Пытаюсь сделать, чтобы добавленный товар был виден не только в своей подкатегории, но и в главной категории.

 

Изначально было так:

 

mysql_query("INSERT INTO `product_to_category` VALUES ($next_id, $category, '')");
 

Здесь третий столбец — main_category. Создал переменную $main_category, которая берётся из `parent_id`, сделал так:

 

 

mysql_query("INSERT INTO `product_to_category` VALUES ($next_id, '$category, $main_category', '')");
 

Но так ничего не сработало — всё равно товар отображается только в своей подкатегории, а в основной категории — ничего. Подскажите, как сделать, чтобы все добавляемые товары отображались в 2 местах — своей подкатегории и главной категории?

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


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

Ещё пробовал $main_category заносить в третий столбец, но и это ничего не меняет. Потом попробовал создать товар в админке, оказалось, что третий столбец там устанавливается в 0, хотя основная категория указывалась.

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


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

Создал переменную $main_category, которая берётся из `parent_id`, сделал так:

mysql_query("INSERT INTO `product_to_category` VALUES ($next_id, '$category, $main_category', '')");

Но так ничего не сработало — всё равно товар отображается только в своей подкатегории, а в основной категории — ничего.

 

батенька, да вы даже основ mysql-синтаксиса не знаете. :-x

как вы умудряетесь вообще что-то делать?  :lol:

 

Подскажите, как сделать, чтобы все добавляемые товары отображались в 2 местах — своей подкатегории и главной категории?

mysql_query("INSERT INTO `product_to_category` VALUES ($next_id, $category, '0')"); /* показывать также в категориях... */
mysql_query("INSERT INTO `product_to_category` VALUES ($next_id, $main_category, '1')"); /* основная категория товара */

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


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

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

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

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

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

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

Войти

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

Войти


  • Последние посетители   0 пользователей онлайн

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