[英]showing products after categories php
我有以下标记,显示类别和子类别的列表:
<table border="0" width="100%" cellspacing="0" cellpadding="2">
<tr class="dataTableHeadingRow">
<td class="dataTableHeadingContent"><?php echo TABLE_HEADING_PRODUCTS; ?></td>
<td class="dataTableHeadingContent" align="right"><?php echo TABLE_HEADING_TOTAL_WEIGHT; ?> </td>
</tr>
<?php
function category_list( $category_parent_id = 0 )
{
$sql = 'select cd.categories_name,c.categories_id, c.parent_id, c.sort_order from ' . TABLE_CATEGORIES . ' c, ' . TABLE_CATEGORIES_DESCRIPTION . ' cd where c.categories_id = cd.categories_id AND c.parent_id='.$category_parent_id;
$res = tep_db_query( $sql );
$cats = array();
while ( $cat = tep_db_fetch_array( $res ) )
{
$cats[] = $cat;
}
if (count($cats) == 0)
{
return '';
}
$list_items = array();
foreach ( $cats as $cat )
{
$list_items[] = '<tr class="dataTableRow"><td class="dataTableContent">';
if($category_parent_id != 0) $list_items[] = ' ';
if($category_parent_id == 0 )$list_items[] = '<b>';
$list_items[] = $cat['categories_name'];
if($category_parent_id == 0) $list_items[] = '</b>';
$list_items[] = '</td><td class="dataTableContent">';
$list_items[] = category_list( $cat['categories_id'] );
$list_items[] = '</td></tr>';
}
$list_items[] = '';
return implode( '', $list_items );
}
echo category_list();
?>
</table>
每个类别均以粗体显示,子类别在右侧略有缩进。 我需要显示每个子类别中可用的产品。 我尝试将所需的产品字段添加到sql查询中,但是没有响应。 我需要添加以搜索产品的字段是: products_id, products_name
,它们来自表TABLE_PRODUCTS_DESCRIPTION
,并对其进行排序,还有一个名为TABLE_PRODUCTS_TO_CATEGORIES
表,其中具有字段TABLE_PRODUCTS_TO_CATEGORIES
products_id and categories_id
。
我将如何去做呢?
看起来您正在使用osCommerce或其分支之一,并且想要显示每个类别的产品数量。
如果只有两个级别的类别可以做,如果类别树更深入,请警告这是真正的性能杀手,因为在osCommerce中构建类别树已经完成了,也就是说,并不是真正的性能优化,特别是对于复杂的树状结构。
在直接的方式是,计数的条目TABLE_PRODUCTS_TO_CATEGORIES
其中列表categories_id
保持当前的类ID:
$query = 'SELECT COUNT(*) FROM `'.TABLE_PRODUCTS_TO_CATEGORIES.'` WHERE `categories_id` = "'.$cat['categories_id'].'"';
获取结果,您就可以了。
通过这种方法,尽管您只会直接获得tnis类别中的产品数量,而不是子类别中的产品数量。
您可能还需要查看includes/boxes/categories.php
因为它已内置在osC中-方法tep_show_category()
和此处称为tep_count_products_in_category()
可能对您有用,因此无需自己编写。
我真的不喜欢联接2个表的查询中的from
事物。 我已经按照自己喜欢的方式更改了查询。 您可以根据需要将其更改为“ from
方式。
$sql = 'select cd.categories_name,c.categories_id, c.parent_id, c.sort_order, pd.products_id, pd.products_name
from ' . TABLE_CATEGORIES . ' c
inner join ' . TABLE_CATEGORIES_DESCRIPTION . ' cd on c.categories_id = cd.categories_id
inner join '. TABLE_PRODUCTS_TO_CATEGORIES .' pc on pc.categories_id=c.categories_id
inner join ' . TABLE_PRODUCTS_DESCRIPTION . ' pd on pd.products_id=pc.products_id
where c.parent_id='.$category_parent_id;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.