0

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

$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>

问候

4

1 回答 1

1

有许多不同的方法可以给这只特殊的猫剥皮,有些方法比其他方法更有效。下面是我的头顶,旨在让您朝着正确的大方向前进。

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

$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 语法。不过,您应该明白这一点。

留给您作为练习来确定如何处理没有子类别的类别并提高效率。

于 2013-01-01T02:10:19.750 回答