Блок "Самые продаваемые товары"
#21
Отправлено 21 August 2012 - 03:15 PM
Да нет с кодом все в порядке. Все грамотно сделано.
Тут косяк с ПХП или SQL. На openserver работает через раз. На hetzner выдает один и тот же товар несколько раз.
#22
Отправлено 21 August 2012 - 03:28 PM
Попробуйте руками в консоли SQL ввести SQL-команду выборки списка товаров и посмотрите результат. Сразу будет понятно, в SQL дело или нет. Мне, честно говоря, это кажется маловероятным. Даже для виндовых сборок LAMP-сервера.Тут косяк с ПХП или SQL
#23
Отправлено 22 August 2012 - 08:59 AM
Поэтому господа если у вас еще не прописаны все "продакт коды" и вам очень не терпится подключить данный модуль - временно добавляйте код
AND p.product_code<>"" после WHERE o.statusID>=$statusID
#24
Отправлено 22 August 2012 - 04:26 PM
...то прописывайте уникальные Коды Продукта, без них рано или поздно будет граблями по лбу. Отсутствие кода это тоже неуникальность, у кучи товара один и тот же код "". Ну а в этом модуле для связи таблиц можно использовать наименование продукта вместо кода продукта соответствующим образом переписав SELECT.Поэтому господа если у вас еще не прописаны все "продакт коды" и вам очень не терпится подключить данный модуль
#25
Отправлено 22 August 2012 - 07:11 PM
...то прописывайте уникальные Коды Продукта, без них рано или поздно будет граблями по лбу. Отсутствие кода это тоже неуникальность, у кучи товара один и тот же код "". Ну а в этом модуле для связи таблиц можно использовать наименование продукта вместо кода продукта соответствующим образом переписав SELECT.Поэтому господа если у вас еще не прописаны все "продакт коды" и вам очень не терпится подключить данный модуль
Можно и по названию связывать таблицы, только это затормозит скрипт.
Это как загружать файл прайс-листа - если выбираешь привязку "по названию" время импорта увеличивается втрое!
Кстати добавил тут на досуге возможность вывода картинок. Модуль стал повеселее выглядеть )
#26
Отправлено 22 August 2012 - 07:35 PM
Код товара и название товара в таблице товаров оба являются текстовыми полями. Из строки в таблице заказов можно вылавливать код товара (как и сделано), а можно название товара (как я предложил). Никакой разницы нет. Ни в быстродействии, ни в чем либо еще. Точнее, почти нет. Длина полей кода и названия в таблице товаров разная - 25 и 255 байт, т.е. в теории по более длинному полю делать выборку дольше, но на практике разница не заметна, ведь мы делаем выборку не по всей базе, а LIMIT N, где N в пределах десятка. Разница по времени выборки будет незаметна.Можно и по названию связывать таблицы, только это затормозит скрипт.
Невзирая на простоту решения логично было бы сказав "А" сказать и "Б", т.е. выложить исправленный код. Хотя, конечно, все это можно свободно посмотреть в модуле "последние просмотренные товары", откуда я и взял рыбу кода для своего блока - там штатно в блоке выводятся только названия товаров, а вывод картинок вместе с названиями закомментирован.Кстати добавил тут на досуге возможность вывода картинок. Модуль стал повеселее выглядеть )
#27
Отправлено 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 запрос, результат - ошибка.
#28
Отправлено 23 August 2012 - 10:13 AM
Сортировка orders по orderID даст Вам последние ордера, а сортировка ordered_carts по itemID - последние купленные товары.мысл в том что бы вытянуть из таблицы последние 8 покупок
#29
Отправлено 18 January 2013 - 10:22 AM
#30
Отправлено 18 January 2013 - 12:21 PM
подскажите кто сталкивался!!
Разобрался сам с проблемой, стояло в общих настройках подтверждение заказа на e-mail в общих настройках.
#31
Отправлено 18 January 2013 - 01:37 PM
Вывод таблицей сделал, но сами фотографии не отображаются.
вот сайт 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}
то есть проблема в выводе фотографий товара они не отображаются!!
#32
Отправлено 18 January 2013 - 01:55 PM
Если в SELECT картинка обзывается default_picture, а в HTML вы подставляете filename, то с чего бы им отображаться?о есть проблема в выводе фотографий товара они не отображаются!!
#33
Отправлено 18 January 2013 - 02:14 PM
указал default_picture теперь ссылка на картинку стала вида <img src="data/small/4">. Помогите плиз
заработало указал thumbnail Господи до чего же я еще глуп))
badisoft огромное Вам спасибо, я просто заглянул в базу данных и увидел, что поле картинки называется очень просто filename thumbnail enlarged
и до меня дошло что нужно указывать в html а если к SELECT добавить еще pp.filename то в html можно писать и filename
badisoft, СПАСИБО
Теперь другая проблема если у товара нет фотографии. То он теперь просто не отображается, буду ее решать, как получится обязательно напишу.