我正在使用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>
此致
答案 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语法。你应该明白这个想法。
您可以通过练习确定如何处理没有子类别的类别,并提高效率。