【问题标题】:Categories & Sub-Categories with php, mysql and smarty带有 php、mysql 和 smarty 的类别和子类别
【发布时间】:2012-12-31 17:10:12
【问题描述】:

我正在使用 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>

问候

【问题讨论】:

  • 子类别如何与其各自的父类别相关联?
  • @RobertB 这正是我想知道的我想为每个类别显示子类别并搜索解决方案但没有找到
  • 我重新阅读了您的问题,发现您提供了我正在寻找的信息。

标签: php smarty3


【解决方案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 语法是否正确。不过你应该明白了。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-05
    • 2010-11-22
    • 2012-04-30
    • 1970-01-01
    • 1970-01-01
    • 2022-11-20
    相关资源
    最近更新 更多