Автор Тема: Добавление таблицы  (Прочитано 339 раз)

30 Марта 2015, 17:46:45
  • Пользователь
  • **
  • Сообщений: 55
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Здравствуйте!
Подскажите, пожалуйста, как добавить таблицу в базу, чтобы она и все поля воспринимались Престой, а то не видит. 1.4
30 Марта 2015, 18:48:18
Ответ #1
  • Ветеран
  • *****
  • Сообщений: 1190
  • Репутация: +28/-1
  • Сообщество PrestaShop
    • Просмотр профиля
В phpMyAdmin можно создать таблицу, выьрать бд и нажать Добавить таблицу.
30 Марта 2015, 19:23:37
Ответ #2
  • Пользователь
  • **
  • Сообщений: 55
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Добавить то я могу, но данные не выводятся потом.
30 Марта 2015, 20:07:30
Ответ #3
  • Ветеран
  • *****
  • Сообщений: 20837
  • Репутация: +25276/-0
  • Prestashop - просто и эффективно
    • Просмотр профиля
Таблицу добавляют для модуля. В модуле можете выбрать данные из своей таблицы или сохранить.
Для работы с таблицей нужно создать класс.
http://doc.prestashop.com/display/PS16/Fundamentals+of+PrestaShop+Development#FundamentalsofPrestaShopDevelopment-Concepts
Эксперт Prestashop - решения всех проблем, написание модулей, создание тем для интернет-магазинов под Prestashop.
Эксперт Magento - создам сайт на Magento, программирование кастомных модулей для Magento, кастомизация тем Magento.
Лучшие цены!!!
30 Марта 2015, 20:47:24
Ответ #4
  • Пользователь
  • **
  • Сообщений: 55
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Спасибо! Я здесь где-то писал, что скопировал модуль отзывов, переименовал, установил и все нормально, кроме главного. Не выводит информацию. А не выводит потому, что я добавил при установке еще 4 поля в таблицу базы данных. Старые поля остались и еще 4 новых добавил. Они в таблице появились, но информация из этих новых полей не выводится, а со старых выводится. Эти поля не учитываются вообще при обработке. Мне не хватает полей в таблице модуля, а добавленные не учитываются.
31 Марта 2015, 00:36:01
Ответ #5
  • Ветеран
  • *****
  • Сообщений: 32988
  • Репутация: +26759/-0
    • Просмотр профиля
Добавьте эти поля в sql запросы в модуле.
31 Марта 2015, 14:38:49
Ответ #6
  • Пользователь
  • **
  • Сообщений: 55
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Большое спасибо! Все получилось)
01 Апреля 2015, 22:46:57
Ответ #7
  • Пользователь
  • **
  • Сообщений: 55
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Здравствуйте! Не подскажете, как мне информацию из таблицы этого модуля выводить не по id_product, а по name?  Я везде уже вроде менял, а толку нет.  Наверное здесь нужно править?
public static function getByProduct($id_product, $p = 1, $n = null)
{
if (!Validate::isUnsignedId($id_product))
die(Tools::displayError());
$validate = Configuration::get('PRODUCT_S_MODERATE');
$p = (int)($p);
$n = (int)($n);
if ($p <= 1)
$p = 1;
if ($n != null AND $n <= 0)
$n = 5;
return Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS('
SELECT pc.`id_product_comment`, IF(c.id_customer, CONCAT(c.`firstname`, \' \',  LEFT(c.`lastname`, 1)), pc.customer_name) customer_name, pc.`content`, pc.`grade`, pc.`name`, pc.`date_add`, pc.`title`
  FROM `'._DB_PREFIX_.'product_comment` pc
LEFT JOIN `'._DB_PREFIX_.'customer` c ON c.`id_customer` = pc.`id_customer`
WHERE pc.`id_product` = '.(int)($id_product).($validate == '1' ? ' AND pc.`validate` = 1' : '').'
ORDER BY pc.`date_add` DESC
'.($n ? 'LIMIT '.(int)(($p - 1) * $n).', '.(int)($n) : ''));
}
01 Апреля 2015, 23:06:14
Ответ #8
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 85945
  • Репутация: +25399/-0
  • Сообщество PrestaShop
    • Просмотр профиля
ORDER BY pc.`название поля по которому нужно сортировать`
02 Апреля 2015, 00:01:36
Ответ #9
  • Пользователь
  • **
  • Сообщений: 55
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Спасибо, но это сортировка, мне  нужно  выводить на страницу товара информацию из таблицы по имени, а не по id. Сравнивать имя товара с именем из поля "name", а не сравнивать id_product.
02 Апреля 2015, 00:12:08
Ответ #10
  • Ветеран
  • *****
  • Сообщений: 1010
  • Репутация: +2/-0
  • Сообщество PrestaShop
    • Просмотр профиля
мне  нужно  выводить на страницу товара информацию из таблицы по имени, а не по id.
ORDER BY pc.`name`
02 Апреля 2015, 00:47:31
Ответ #11
  • Пользователь
  • **
  • Сообщений: 55
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Да ну нет. Есть таблица с полями - name, shop_name, shop_url. При открытии страницы, скажем, Фотоаппарат Canon 60d, отправляется запрос в эту таблицу, и если есть совпадения по названию (Фотоаппарат Canon 60d), то выдается информация. Сравнение идет по имени, а не по id, как сейчас. А сортировать при выводе мне не нужно.
02 Апреля 2015, 11:58:26
Ответ #12
  • Ветеран
  • *****
  • Сообщений: 32988
  • Репутация: +26759/-0
    • Просмотр профиля
Не понятно что нужно сделать

Цитировать
Не подскажете, как мне информацию из таблицы этого модуля выводить не по id_product, а по name
Для этог нужно в sql запрос добавить ORDER BY ...

Цитировать
При открытии страницы, скажем, Фотоаппарат Canon 60d, отправляется запрос в эту таблицу, и если есть совпадения по названию (Фотоаппарат Canon 60d), то выдается информация. Сравнение идет по имени, а не по id, как сейчас.
Для этого в sql добавить WHERE ...
02 Апреля 2015, 12:15:30
Ответ #13
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 85945
  • Репутация: +25399/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Да ну нет. Есть таблица с полями - name, shop_name, shop_url. При открытии страницы, скажем, Фотоаппарат Canon 60d, отправляется запрос в эту таблицу, и если есть совпадения по названию (Фотоаппарат Canon 60d), то выдается информация. Сравнение идет по имени, а не по id, как сейчас. А сортировать при выводе мне не нужно.
Если вы пишите про стандарный модуль комметариев, то он так и работает.
Посетитель выбирает по имени товара, а не по ид. Но в запрос передается ид товара, для ускорения поиска результатов. Так как ид индекс. Поэтому не нужно передавать имя и менять условия WHERE.
02 Апреля 2015, 15:47:38
Ответ #14
  • Пользователь
  • **
  • Сообщений: 55
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Спасибо! У меня будут большие файлы и ид в них нет, я понимаю, что по ид быстрее, но другого способа не вижу.
Мне присылается csv файл с полями - name, shop, price, url. Ид тоже там есть, но это ид не моего товара, а их. В других прайсах, от других магазинов - другие ид.
Я никак не пойму, как это вообще сделать.
Может сначала присвоить ид товару из прайса, опять же сравнив по имени, а потом загружать?