Форум русской поддержки Joomla!® CMS
09.12.2016, 04:07:28 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 3.0 FAQ Joomla 2.5 FAQ Joomla 1.5 FAQ Правила форума Новости Joomla Реклама Войти Регистрация Помощь  
Страниц: [1]   Вниз
  Добавить закладку  |  Печать  
Автор

Вывести список товаров с той же ценой

 (Прочитано 553 раз)
0 Пользователей и 1 Гость смотрят эту тему.
tomas_morgam
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 131


« : 10.09.2015, 16:36:06 »

Здравствуйте! Как можна реализовать следующее: пользователь находится на карточке товара и видит список всех товаров из выбранной категории с похожей или одинаковой ценой? Есть идея напрямую вытягивать этот список из БД, но не знаю как засунуть запрос сюда
Код:
<div class="jshop_list_product">
    <table class = "jshop list_related">
        <?php foreach($this->related_prod as $k=>$product){?> 
            <?php if ($k%$in_row==0) print "<tr>";?>
            <td width="<?php print 100/$in_row?>%" class="jshop_related">
                <?php include(dirname(__FILE__)."/../".$this->folder_list_products."/".$product->template_block_product);?>
            </td>
            <?php if ($k%$in_row==$in_row-1) print "</tr>";?>   
        <?php }?>
        <?php if ($k%$in_row!=$in_row-1) print "</tr>";?>
    </table>
    </div>
Записан
dmitry_stas
Профи
********

Репутация: +798/-4
Offline Offline

Сообщений: 7776



« Ответ #1 : 10.09.2015, 17:17:23 »

во-первых, вы говорите о карточке товара, а показываете шаблон не карточки товара.
во-вторых, в чем именно проблема "засунуть запрос сюда" или в принципе куда угодно?
Записан
tomas_morgam
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 131


« Ответ #2 : 10.09.2015, 17:33:26 »

во-первых, вы говорите о карточке товара, а показываете шаблон не карточки товара.
во-вторых, в чем именно проблема "засунуть запрос сюда" или в принципе куда угодно?
Вы правы, немного ошибся, код из модуля "Сопутствующие".
Здесь этот модуть и подключается
Код:
<?php
    print $this->_tmp_product_html_before_related;
    include(dirname(__FILE__)."/related.php");
    print $this->_tmp_product_html_before_review;
    include(dirname(__FILE__)."/review.php");
?>
А как мне вывести (возможно типа "$query = "SELECT * FROM `m06wr_jshopping_products` WHERE `product_price` LIKE '3227'") список товаров с одинаковой ценой?
Записан
dmitry_stas
Профи
********

Репутация: +798/-4
Offline Offline

Сообщений: 7776



« Ответ #3 : 10.09.2015, 17:54:03 »

ну так вы же сами пишите какой нужен запрос. его и делайте. я честно, просто не пойму в чем именно проблема Azn
Записан
tomas_morgam
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 131


« Ответ #4 : 10.09.2015, 18:06:53 »

ну так вы же сами пишите какой нужен запрос. его и делайте. я честно, просто не пойму в чем именно проблема Azn
Вопрос в том "как написать вывод товаров с одинаковой ценой"?
Код:
$query = "SELECT * FROM `m06wr_jshopping_products` WHERE `product_price` LIKE '2000'";
echo $query;
Я вписываю этот код в карточку товара и в карточке отобразяться список товаров с ценой "2000"?
Записан
dmitry_stas
Профи
********

Репутация: +798/-4
Offline Offline

Сообщений: 7776



« Ответ #5 : 10.09.2015, 19:02:43 »

нет конечно Azn выведет
Цитировать
SELECT * FROM `m06wr_jshopping_products` WHERE `product_price` LIKE '2000'

почитайте, как работать с базой данных в Joomla
Код:
$db = JFactory::getDBO();
и так далее
Записан
tomas_morgam
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 131


« Ответ #6 : 11.09.2015, 12:01:22 »

нет конечно Azn выведет
почитайте, как работать с базой данных в Joomla
Код:
$db = JFactory::getDBO();
и так далее
Ок, сделал по аналогии с примером
Код:
$db = JFactory::getDbo();
$query = $db->getQuery(true);
 
$query
    ->select($db->quoteName(array('product_id', 'product_price', 'product_thumb_image', 'ordering')))
    ->from($db->quoteName('#__jshopping_products'))
    ->where($db->quoteName('product_price'). ' LIKE '. $db->quote('\'2125%\''))
    ->order('ordering ASC');
 
$db->setQuery($query);
$results = $db->loadObjectList();
print_r($results);
Но вообще ничего не выводит. Подскажите, пожалуйста, как исправить код?
Записан
dmitry_stas
Профи
********

Репутация: +798/-4
Offline Offline

Сообщений: 7776



« Ответ #7 : 11.09.2015, 13:06:03 »

уберите \'
Записан
tomas_morgam
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 131


« Ответ #8 : 11.09.2015, 13:11:07 »

уберите \'
Так $db->quote('2125'))?
Записан
dmitry_stas
Профи
********

Репутация: +798/-4
Offline Offline

Сообщений: 7776



« Ответ #9 : 11.09.2015, 13:15:47 »

нет, не так. уберите только \'
Записан
tomas_morgam
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 131


« Ответ #10 : 11.09.2015, 13:22:54 »

нет, не так. уберите только \'
$db->quote('185%'))
Без результатов
Записан
dmitry_stas
Профи
********

Репутация: +798/-4
Offline Offline

Сообщений: 7776



« Ответ #11 : 11.09.2015, 13:30:06 »

а так
Код:
->where($db->quoteName('product_price'). ' LIKE "2125%"')
?

P.S. а что значит вообще ничего не выводит? именно вообще ничего? пустота?
« Последнее редактирование: 11.09.2015, 13:35:39 от dmitry_stas » Записан
tomas_morgam
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 131


« Ответ #12 : 11.09.2015, 14:03:03 »

Давайте еще раз.
Задание - вывести товары у которых id равен 185 (потом переделаю под product_price).
Код
Код:
$db = JFactory::getDbo();
$query = $db->getQuery(true);
 
$query
    ->select($db->quoteName(array('product_id', 'product_price', 'product_thumb_image', 'ordering')))
    ->from($db->quoteName('#__jshopping_products'))
    ->where($db->quoteName('product_id'). ' LIKE '. $db->quote('185'))
    ->order('ordering ASC');
 
$db->setQuery($query);
$results = $db->loadObjectList();
print_r($results);
В результате совсем ничего не выводится.
Записан
dmitry_stas
Профи
********

Репутация: +798/-4
Offline Offline

Сообщений: 7776



« Ответ #13 : 11.09.2015, 14:28:07 »

а вы это вообще где делаете? сделайте после этого кода
Код:
print_r($query->__toString());
что выведет?
Записан
tomas_morgam
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 131


« Ответ #14 : 11.09.2015, 15:00:24 »

а вы это вообще где делаете? сделайте после этого кода
Код:
print_r($query->__toString());
что выведет?
SELECT `product_id`,`product_price`,`product_thumb_image`,`ordering` FROM `#__jshopping_products` WHERE `product_id` LIKE '185%' ORDER BY ordering ASC
Записан
tomas_morgam
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 131


« Ответ #15 : 11.09.2015, 15:21:18 »

SELECT `product_id`,`product_price`,`product_thumb_image`,`ordering` FROM `#__jshopping_products` WHERE `product_id` LIKE '185%' ORDER BY ordering ASC
Разобрался, большое спасибо!
Код выборки по всем товарам
Код:
SELECT `product_id` , `name_ru-RU` , `product_price` , `product_thumb_image`
FROM `m06wr_jshopping_products`
WHERE `product_price`
BETWEEN '8000'
AND '9000'
LIMIT 0 , 30
1) Как изменить чтобы была выборка по текущей категории в которую входит текущий товар (так как нюанс в том, что категории "сидят" в другой таблице products_to_categories).
2) Как получить имя товара?
   Думал так "print_r($results[0]->product_thumb_image);", но когда меняю переменную вместо "product_thumb_image" на "name_ru-RU" выводит "0".
« Последнее редактирование: 11.09.2015, 16:30:47 от tomas_morgam » Записан
dmitry_stas
Профи
********

Репутация: +798/-4
Offline Offline

Сообщений: 7776



« Ответ #16 : 11.09.2015, 19:23:29 »

1. гуглите про LEFT JOIN
2. гуглите про тире в названии свойства объекта
Записан
tomas_morgam
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 131


« Ответ #17 : 14.09.2015, 10:48:23 »

1. гуглите про LEFT JOIN
2. гуглите про тире в названии свойства объекта
Про тире разобрался, а вот с LEFT JOIN не выходит.
Вот мой запрос
Код:
SELECT `name_ru-RU` , `product_price` , `product_thumb_image`
FROM `m06wr_jshopping_products` AS prod
LEFT JOIN `m06wr_jshopping_products_to_categories` AS pr_cat ON pr_cat.`product_id` = prod.`product_id`
WHERE `product_price`
BETWEEN '8000'
AND '9000'
Запрос работает, выборка цены идет, но подтягиваются все товары, а не товары текущей категории в которую входит текущий товар.
Записан
dmitry_stas
Профи
********

Репутация: +798/-4
Offline Offline

Сообщений: 7776



« Ответ #18 : 14.09.2015, 11:15:03 »

ну так а где в запросе указано, из какой категории?
Код:
WHERE pr_cat.category_id = 'нужный id категории' AND `product_price`...
Записан
tomas_morgam
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 131


« Ответ #19 : 14.09.2015, 11:41:30 »

ну так а где в запросе указано, из какой категории?
Код:
WHERE pr_cat.category_id = 'нужный id категории' AND `product_price`...
Указываю статически - ничего не выводиться, хотя такая категория есть.
Код:
SELECT `name_ru-RU` , `product_price` , `product_thumb_image`
FROM `m06wr_jshopping_products` AS prod
LEFT JOIN `m06wr_jshopping_products_to_categories` AS pr_cat ON pr_cat.`product_id` = prod.`product_id`
WHERE pr_cat.category_id = '250' AND `product_price` BETWEEN '8000' AND '9000'
Но это не совсем то, мне нужно чтоб динамически - в карточке товара вывести товары только этой категории похожие по цене.
Записан
dmitry_stas
Профи
********

Репутация: +798/-4
Offline Offline

Сообщений: 7776



« Ответ #20 : 14.09.2015, 12:08:07 »

ну так вставьте категорию данного товара, в чем проблема?
Записан
tomas_morgam
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 131


« Ответ #21 : 14.09.2015, 12:19:00 »

ну так вставьте категорию данного товара, в чем проблема?
Проблема в том, как изменить sql запрос, так как не получается вставить текущую категорию данного товара.
« Последнее редактирование: 14.09.2015, 12:23:20 от tomas_morgam » Записан
dmitry_stas
Профи
********

Репутация: +798/-4
Offline Offline

Сообщений: 7776



« Ответ #22 : 14.09.2015, 12:38:31 »

не получается вставить текущую категорию данного товара.
по какой причине?
Записан
tomas_morgam
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 131


« Ответ #23 : 14.09.2015, 14:48:57 »

по какой причине?
Недостаточного опыта работы с прямыми sql запросами к базе.
Если проще, как изменить запрос (код указал выше) чтобы работала выборка по текущей категории?
Записан
dmitry_stas
Профи
********

Репутация: +798/-4
Offline Offline

Сообщений: 7776



« Ответ #24 : 14.09.2015, 16:28:30 »

ааа, понятно. подумал, что вставляете, и ошибка какая то.

в карточке товара категория товара находится в $this->category_id
Записан
Страниц: [1]   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Powered by SMF 1.1.21 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet