Форум → Разработка → Базы данных → Нужна помощь с выбором товара из каталога
Нужна помощь с выбором товара из каталога
-
День добрый.
Вообщем есть каталог товаров
У всех групп есть id у каждой группы есть id родителя - id_merge
у товаров в группе есть id родительской группы, тоже - id_merge
Вообщем сейчас сайт отображает только товары из той категории в которую заходишь.
Задача сделать так чтоб когда заходишь в категорию то в ней отображались все товары самой категории и вложенных категорий
Уже голову сломал, 2 дня сижу. Помогите пожалуйста -
-
24 июля 2014 г. 10:14, спустя 15 минут 50 секунд
Сейчас это выглядит вот так
$sql = "SELECT SQL_CALC_FOUND_ROWS * FROM `catalog` WHERE `type` = 'tovar' AND `id_merge` = '{$cat}' AND `active` = 1 ORDER BY `sort`, `id` DESC LIMIT {$limit1}, {$tvonpage}";
$res = mysql_query($sql);
$num = mysql_fetch_row(mysql_query("SELECT FOUND_ROWS()"));
$alltv = $num[0];
$count = 0;
$goodList = "";
while ($row = mysql_fetch_assoc($res))
{
$imgArray = explode(",", $row['img']);
$imgHtml = empty($imgArray[1]) ? "" : "<img src=\"/images/catalog/{$imgArray[1]}_2.jpg\"/>";
$goodList .=
"
<tr>
<td style=\"vertical-align: top; padding: 20px 10px 0px 20px; text-align: center;\"><a href=\"/{$threadNow['link']}/".implode("/", catPath($row['id_merge'])).($row['id_merge'] != 0 ? "/" : "")."{$row['link']}\">{$imgHtml}</a></td>
<td style=\"vertical-align: top; padding: 20px 0px 0px 0px; width: 440px;\">
<div style=\"margin-bottom: 5px;\"><a href=\"/{$threadNow['link']}/".implode("/", catPath($row['id_merge'])).($row['id_merge'] != 0 ? "/" : "")."{$row['link']}\" class=goodName>{$row['name']}</a></div>
<div class=text>".substr(strip_tags($row['text']),0,200)."</div>
</td>
<td style=\"vertical-align: middle; padding: 20px 0px 0px 20px\">
<div style=\"margin-bottom: 15px; font-size: 18px; text-align: center;\">{$row['price']} руб.</div>
<div style=\"cursor: pointer;\" class=addGood goodid=\"{$row['id']}\"><img src=\"/images/toBin1.jpg\" /><br />
<font color=#fb6d2b><small><b><u>Доставка бесплатно!</u></b></small></font><br/>
<small><small>при заказе от 5000 руб.</small></small></div>
</td>
</tr>
";
$count++;
}
$pages=ceil($alltv/$tvonpage);
if ($page > $pages && $page>1) header("Location: ?cat={$cat}&page={$pages}");
$noPage = false;
if ($pages>1)
{
for ($i = 1; $i <= $pages; $i++)
{
if ($i < 5 || $i > ($pages - 5) || ($i > ($page - 5) && $i < ($page + 5)))
{
if ($i!=$page) $pageHtml .= "<div class=page><a href='?page={$i}' class=page>{$i}</a></div>";
else $pageHtml .= "<div class=page><b style=\"\">{$i}</b></div>";
$noPage = false;
}elseif(!$noPage){
$pageHtml .= "<b class=page> … </b>";
$noPage = true;
}
}
}
$goodList = "<table style=\"margin: 20px 0px;\"><tr><td>{$goodList}</td></tr></table>";
if ($count == 0) $goodList .= "<div class=text style=\"margin: 20px 0px 0px 25px; color: #777777; font-size: 11px;\"></div>";
$goodList .= "<div style=\"margin: 25px 0px;\">{$pageHtml}</div>"; -
24 июля 2014 г. 12:56, спустя 2 часа 41 минуту 22 секунды
Понял только этокогда заходишь в категорию то в ней отображались все товары самой категории и вложенных категорий
SELECT * FROM products
INNER JOIN categories
ON products.category_id = categories.id
WHERE categories.id = 1 OR categories.parent_id = 1
–где 1 - это id родительской категории
Вроде так. Имена полей сам поставишь, какие нужно.Высокоуровневое абстрактное говно -
24 июля 2014 г. 19:53, спустя 6 часов 57 минут 13 секунд
ему хочется товары из всех вложенных категорий. идея плохая помоему ) но решается она с помощью Nested Sets
то есть структуру базы полюбому менять. затем добиться результата, а потом понять, что отображать все товары это не очень мудро.
по твоей логике на верхнем уровне посетитель должен увидеть тупо список ВСЕХ товаров, затем список всех телефонов, затем список всех смартфонов и т.д.
imho, тут что-то непродумано.ιιlllιlllι унц-унц -
14 августа 2014 г. 18:59, спустя 20 дней 23 часа 6 минут
@vladimir93,
в таблице категорий заведи поле "descendants" и положи в него все категории-потомки
можно пойти дальше, завести поле "descendants_items" и положить в него все товары, принадлежащие всем категориям-потомкам
обновлять при добавлении/удалении/перемещении категорий или товаровне всё полезно, что в swap полезло
Пожалуйста, авторизуйтесь, чтобы написать комментарий!