分类&使用php,mysql和smarty的子类别

时间:2012-12-31 17:10:12

标签: php smarty3

我正在使用php,mysql和smarty模板为超市构建自定义购物车 产品类别和子类别必须分开列表 类别表(id,catname) 子类别表(id,cat_id,subcategory)其中cat_id指的是类别 假设我每个类别有2个类别和2个子类别 我的PHP代码是

$smarty = new Smarty;
$smarty->caching = true;
$smarty->cache_lifetime = 120;
$category_mysql = "SELECT * FROM category";
$run_category = mysql_query($category_mysql, $link) or die(mysql_error());
$all_category = mysql_num_rows($run_category);

$category_link = array();
$i=0;
while ($category = mysql_fetch_assoc($run_category)) {
            $ml = array(
                'id' => $category['id'],
                'catname'=> $category['catname'],
            );
            $category_link[$i++] = $ml;
}
$smarty->assign('category_link', $category_link);
$smarty->display("products.tpl");

我的HTML代码是:

{section name=cats loop=$category_link}
<div class="category">{$category_link[cats].catname}</div>
{/section}

我怎样才能查看它所属类别下面的每个子类别? 像:

<div class="category">Category 1</div>
<div class="subcat">Sub Cat 1</div>
<div class="subcat">Sub Cat 2</div>
<div class="category">Category 2</div>
<div class="subcat">Sub Cat 3</div>
<div class="subcat">Sub Cat 4</div>

此致

1 个答案:

答案 0 :(得分:1)

有许多不同的方法来修饰这只猫,有些方法比其他猫更有效。下面是我的头顶,意味着让你朝着正确的方向前进。

除了$category_link之外,您还需要按类别索引子类别的内容。类似$subcategory_link的东西,可能是数组数组,首先按类别id(或名称)索引,然后按每个子类别(或其id,或其他)的递增整数索引。除了现有的查询和while循环之外,运行一个检索所有子类别的查询,然后在第二个类似的$subcategory_link循环中用while填充相关信息。 / p>

$sc = array(
    'id' => $subcategory['id'],
    'subcategory' => $subcategory['subcategory'],
);
$subcategory_link[$subcategory['cat_id']][$j++] = $sc;

请注意,此数组首先按类别ID编制索引。然后在你的模板中:

{foreach $category_link as $cat}
<div class="category">{$cat.catname}</div>
    {foreach $subcategory_link[$cat.cat_id] as $subcat}
<div class="subcat">{$subcat.subcategory}</div>
    {/foreach}
{/foreach}

注意 :尚未检查上述正确的Smarty语法。你应该明白这个想法。

您可以通过练习确定如何处理没有子类别的类别,并提高效率。