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

  • 24 Ответов
  • 684 Просмотров

0 Пользователей и 1 Гость просматривают эту тему.

Здравствуйте! Как можна реализовать следующее: пользователь находится на карточке товара и видит список всех товаров из выбранной категории с похожей или одинаковой ценой? Есть идея напрямую вытягивать этот список из БД, но не знаю как засунуть запрос сюда
Код
<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

  • ********
  • 9615
  • 929
во-первых, вы говорите о карточке товара, а показываете шаблон не карточки товара.
во-вторых, в чем именно проблема "засунуть запрос сюда" или в принципе куда угодно?
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций

во-первых, вы говорите о карточке товара, а показываете шаблон не карточки товара.
во-вторых, в чем именно проблема "засунуть запрос сюда" или в принципе куда угодно?
Вы правы, немного ошибся, код из модуля "Сопутствующие".
Здесь этот модуть и подключается
Код
<?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

  • ********
  • 9615
  • 929
ну так вы же сами пишите какой нужен запрос. его и делайте. я честно, просто не пойму в чем именно проблема :)
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций

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

*

dmitry_stas

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

почитайте, как работать с базой данных в Joomla
Код
$db = JFactory::getDBO();
и так далее
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций

нет конечно :) выведет
почитайте, как работать с базой данных в 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

  • ********
  • 9615
  • 929
уберите \'
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций

уберите \'
Так $db->quote('2125'))?

*

dmitry_stas

  • ********
  • 9615
  • 929
нет, не так. уберите только \'
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций

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

*

dmitry_stas

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

P.S. а что значит вообще ничего не выводит? именно вообще ничего? пустота?
« Последнее редактирование: 11.09.2015, 14:35:39 от dmitry_stas »
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций

Давайте еще раз.
Задание - вывести товары у которых 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

  • ********
  • 9615
  • 929
а вы это вообще где делаете? сделайте после этого кода
Код
print_r($query->__toString());
что выведет?
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций

а вы это вообще где делаете? сделайте после этого кода
Код
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

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, 17:30:47 от tomas_morgam »

*

dmitry_stas

  • ********
  • 9615
  • 929
1. гуглите про LEFT JOIN
2. гуглите про тире в названии свойства объекта
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций

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

  • ********
  • 9615
  • 929
ну так а где в запросе указано, из какой категории?
Код
WHERE pr_cat.category_id = 'нужный id категории' AND `product_price`...
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций

ну так а где в запросе указано, из какой категории?
Код
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

  • ********
  • 9615
  • 929
ну так вставьте категорию данного товара, в чем проблема?
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций

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

*

dmitry_stas

  • ********
  • 9615
  • 929
не получается вставить текущую категорию данного товара.
по какой причине?
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций

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

*

dmitry_stas

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

в карточке товара категория товара находится в $this->category_id
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций