Перейти к содержимому


Блок "Самые продаваемые товары"


  • Вы не можете ответить в тему
Сообщений в теме: 32

#21 mx009

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 54 сообщений
Репутация: 0
Начинающий

Отправлено 21 August 2012 - 03:15 PM

Строка как в дефолтном.
Да нет с кодом все в порядке. Все грамотно сделано.
Тут косяк с ПХП или SQL. На openserver работает через раз. На hetzner выдает один и тот же товар несколько раз.
  • 0

#22 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 21 August 2012 - 03:28 PM

Тут косяк с ПХП или SQL

Попробуйте руками в консоли SQL ввести SQL-команду выборки списка товаров и посмотрите результат. Сразу будет понятно, в SQL дело или нет. Мне, честно говоря, это кажется маловероятным. Даже для виндовых сборок LAMP-сервера.
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#23 mx009

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 54 сообщений
Репутация: 0
Начинающий

Отправлено 22 August 2012 - 08:59 AM

Все заработало. Просто те товары где мы еще не успели прописать product_code дублировались в выдаче.

Поэтому господа если у вас еще не прописаны все "продакт коды" и вам очень не терпится подключить данный модуль - временно добавляйте код

AND p.product_code<>"" после WHERE o.statusID>=$statusID
  • 0

#24 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 22 August 2012 - 04:26 PM

Поэтому господа если у вас еще не прописаны все "продакт коды" и вам очень не терпится подключить данный модуль

...то прописывайте уникальные Коды Продукта, без них рано или поздно будет граблями по лбу. Отсутствие кода это тоже неуникальность, у кучи товара один и тот же код "". Ну а в этом модуле для связи таблиц можно использовать наименование продукта вместо кода продукта соответствующим образом переписав SELECT.
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#25 mx009

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 54 сообщений
Репутация: 0
Начинающий

Отправлено 22 August 2012 - 07:11 PM

Поэтому господа если у вас еще не прописаны все "продакт коды" и вам очень не терпится подключить данный модуль

...то прописывайте уникальные Коды Продукта, без них рано или поздно будет граблями по лбу. Отсутствие кода это тоже неуникальность, у кучи товара один и тот же код "". Ну а в этом модуле для связи таблиц можно использовать наименование продукта вместо кода продукта соответствующим образом переписав SELECT.


Можно и по названию связывать таблицы, только это затормозит скрипт.
Это как загружать файл прайс-листа - если выбираешь привязку "по названию" время импорта увеличивается втрое!

Кстати добавил тут на досуге возможность вывода картинок. Модуль стал повеселее выглядеть )
  • 0

#26 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 22 August 2012 - 07:35 PM

Можно и по названию связывать таблицы, только это затормозит скрипт.

Код товара и название товара в таблице товаров оба являются текстовыми полями. Из строки в таблице заказов можно вылавливать код товара (как и сделано), а можно название товара (как я предложил). Никакой разницы нет. Ни в быстродействии, ни в чем либо еще. Точнее, почти нет. Длина полей кода и названия в таблице товаров разная - 25 и 255 байт, т.е. в теории по более длинному полю делать выборку дольше, но на практике разница не заметна, ведь мы делаем выборку не по всей базе, а LIMIT N, где N в пределах десятка. Разница по времени выборки будет незаметна.

Кстати добавил тут на досуге возможность вывода картинок. Модуль стал повеселее выглядеть )

Невзирая на простоту решения логично было бы сказав "А" сказать и "Б", т.е. выложить исправленный код. Хотя, конечно, все это можно свободно посмотреть в модуле "последние просмотренные товары", откуда я и взял рыбу кода для своего блока - там штатно в блоке выводятся только названия товаров, а вывод картинок вместе с названиями закомментирован.
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#27 mx009

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 54 сообщений
Репутация: 0
Начинающий

Отправлено 23 August 2012 - 08:31 AM

С картинками :


{php}
$statusID = 2; # берутся заказы со статусом 2 и выше (2-Новый,...,5-Доставлен)
$olderday = 10; # берутся заказы за последние семь дней
$prodnum = 7; # берутся пять товаров наибольших по количеству продаж

function BestSalesRecursiveCat($catID,$arrayID=array()) {
$data = db_query("SELECT categoryID FROM ".CATEGORIES_TABLE." WHERE parent=".$catID);
while ($row = db_fetch_assoc($data)) $arrayID = BestSalesRecursiveCat($row['categoryID'],$arrayID);
$arrayID[]=$catID;
return $arrayID; }

$categoryID = $this->get_template_vars('categoryID');
$addon = isset($categoryID)?"AND p.categoryID IN (".implode(",",BestSalesRecursiveCat($categoryID)).")":"";
$data = mysql_query("
SELECT count(*) AS count, p.name, p.productID, p.default_picture, pp.thumbnail FROM ".DB_PRFX."orders AS o
LEFT JOIN ".DB_PRFX."ordered_carts AS oc USING (orderID)
LEFT JOIN ".DB_PRFX."products AS p ON p.product_code=mid(oc.name,2,locate(']',oc.name)-2)
LEFT JOIN ".DB_PRFX."product_pictures AS pp ON pp.photoID=p.default_picture
WHERE o.statusID>=$statusID AND p.product_code<>'' AND o.order_time + INTERVAL $olderday DAY > NOW() $addon
GROUP BY oc.name
ORDER BY count DESC
LIMIT $prodnum
");
while ($row = mysql_fetch_assoc($data)) $r[] = $row;


$this->assign("best_sales", $r);
{/php}

<table width="100%">
<tbody><tr><td>
{section name=i loop=$best_sales}
<div align="center"><a href="product_{$best_sales[i].productID}.html">{$best_sales[i].name}</a>
<div align="right"><b>{$best_sales[i].count}</b></div>

</div>
{if $best_sales[i].thumbnail<>''}
<div align="center"><a href="/index.php?productID={$best_sales[i].productID}"><img style="height:50px" src="data/medium/{$best_sales[i].thumbnail}"></a><br></div>
{/if}
<hr>
{sectionelse}
<div align="center">За последнюю неделю не продано ни одного товара в этой категории</div>
{/section}
</td></tr></tbody>
</table>

Не могу решить элементарную задачу.

Задумал сделать блок "последние покупки" .
Смысл в том что бы вытянуть из таблицы последние 8 покупок и показать их (название + картинка) с сортировкой ORDER BY itemID DESC

Кручу верчу SQL запрос, результат - ошибка.
  • 0

#28 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 23 August 2012 - 10:13 AM

мысл в том что бы вытянуть из таблицы последние 8 покупок

Сортировка orders по orderID даст Вам последние ордера, а сортировка ordered_carts по itemID - последние купленные товары.
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#29 kasta69

    Продвинутый пользователь

  • Download User
  • PipPipPip
  • 102 сообщений
Репутация: 7
Начинающий
  • ГородНижний Тагил

Отправлено 18 January 2013 - 10:22 AM

Вставил данный блок, делаю заказы и ставлю им статус доставлен, в условии тоже стоит доставлен но товары не хотят отображаться!! В чем может быть ошибка?? Сделал сортировку ordered_carts по itemID чтобы получить последние купленные товары.
  • 0

#30 kasta69

    Продвинутый пользователь

  • Download User
  • PipPipPip
  • 102 сообщений
Репутация: 7
Начинающий
  • ГородНижний Тагил

Отправлено 18 January 2013 - 12:21 PM

теперь вообще другая проблема, в чем может быть проблема, заказ оформляется, а в админпанели заказы не отображаются!!!

подскажите кто сталкивался!!

Разобрался сам с проблемой, стояло в общих настройках подтверждение заказа на e-mail в общих настройках.
  • 0

#31 kasta69

    Продвинутый пользователь

  • Download User
  • PipPipPip
  • 102 сообщений
Репутация: 7
Начинающий
  • ГородНижний Тагил

Отправлено 18 January 2013 - 01:37 PM

Помогите пожалуйста вывести данный блок аналогично популярным или новым товарам в 4 столбца таблицей.
Вывод таблицей сделал, но сами фотографии не отображаются.
вот сайт http://kupinstrument.ru блок называется последние купленные товары
вот код:
{php}
$statusID = 5; # берутся заказы со статусом 2 и выше (2-Новый,...,5-Доставлен)
$olderday = 7; # берутся заказы за последние семь дней
$prodnum = 5;  # берутся пять товаров наибольших по количеству продаж
function BestSalesRecursiveCat($catID,$arrayID=array()) {
    $data = db_query("SELECT categoryID FROM ".CATEGORIES_TABLE." WHERE parent=".$catID);
    while ($row = db_fetch_assoc($data)) $arrayID = BestSalesRecursiveCat($row['categoryID'],$arrayID);
    $arrayID[]=$catID;
    return $arrayID; }
$categoryID = $this->get_template_vars('categoryID');
$addon = isset($categoryID)?"AND p.categoryID IN (".implode(",",BestSalesRecursiveCat($categoryID)).")":"AND p.categoryID>1";
$data = mysql_query("
SELECT count(*) AS count, p.name, p.productID, p.default_picture, pp.thumbnail FROM ".ORDERS_TABLE." AS o
JOIN ".ORDERED_CARTS_TABLE." AS oc USING (orderID)
JOIN ".SHOPPING_CART_ITEMS_TABLE." as sci USING (itemID)
JOIN ".PRODUCTS_TABLE." AS p USING (productID)
JOIN ".DB_PRFX."product_pictures AS pp ON pp.photoID=p.default_picture
WHERE o.statusID>=$statusID AND o.order_time + INTERVAL $olderday DAY > NOW() $addon
GROUP BY p.name
ORDER BY count DESC
LIMIT $prodnum
");
while ($row = mysql_fetch_assoc($data)) $r[] = $row;
$this->assign("best_sales", $r);
{/php}

{if $best_sales}
<table cellspacing="0" cellpadding="0" width="100%">
  {section name=i loop=$best_sales}
  {if $smarty.section.i.index is div by 4}<tr>{/if}
    <td width="{math equation="100 / x" x=4 format="%d"}%" align="center" valign="top" style="padding: 8px;
border: 1px solid #000; -webkit-border-radius:8px;-moz-border-radius:8px;border-radius:8px; background: #fff;">
    <a href="/index.php?productID={$best_sales[i].productID}"><img style="height:50px" src="data/{$best_sales[i].filename}"></a>
    <div class="fil"></div>
    <a href="product_{$best_sales[i].productID}.html">{$best_sales[i].name}</a>
    </td>
    {if ($smarty.section.i.index+1) is div by 4}</tr>{else}
    <td><img src="data/{$smarty.const.TPL}/pixel.gif" class="delim" alt=""></td>
    {/if}
    {/section}
</table>
{else}
{/if}

то есть проблема в выводе фотографий товара они не отображаются!!
  • 0

#32 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 18 January 2013 - 01:55 PM

о есть проблема в выводе фотографий товара они не отображаются!!

Если в SELECT картинка обзывается default_picture, а в HTML вы подставляете filename, то с чего бы им отображаться? :)
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#33 kasta69

    Продвинутый пользователь

  • Download User
  • PipPipPip
  • 102 сообщений
Репутация: 7
Начинающий
  • ГородНижний Тагил

Отправлено 18 January 2013 - 02:14 PM

Значит в html надо написать default_picture??

указал default_picture теперь ссылка на картинку стала вида <img src="data/small/4">. Помогите плиз :wacko:

заработало указал thumbnail :D Господи до чего же я еще глуп))

badisoft огромное Вам спасибо, я просто заглянул в базу данных и увидел, что поле картинки называется очень просто filename thumbnail enlarged
и до меня дошло что нужно указывать в html а если к SELECT добавить еще pp.filename то в html можно писать и filename
:D

badisoft, СПАСИБО

Теперь другая проблема если у товара нет фотографии. То он теперь просто не отображается, буду ее решать, как получится обязательно напишу.
  • 0