【发布时间】:2015-01-25 04:54:45
【问题描述】:
我正在尝试在 html 表中输出类别和子类别 我有一个问题,所有子类别都打印在所有类别下
我用这个公式
- cat_id
- 猫名
- cat_parent
我想打印他的父主类别下的每个子类别
我用这个代码
$cats=$mysqli->query("select cat_id,cat_name,cat_parent from cats where cat_parent='0'");
while($row_cats=$cats->fetch_assoc()){
$cats_sub=$mysqli->query("select cat_id,cat_name,cat_parent from cats where cat_parent='".$row_cats['cat_id']."'");
while($row_cats_sub=$cats_sub->fetch_assoc()){
$cats_array_sub[]=$row_cats_sub;
}
$cats_array[]=$row_cats;
}
$cats->free_result();
$cats_sub->free_result();
$t->assign('cats_array',$cats_array);
$t->assign('cats_array_sub',$cats_array_sub);
$t->display('display.tpl');
而 display.tpl 是
<table width="100%" border="0" cellpadding="5">
<tr valign="top">
{assign var="i2" value=0}
{foreach from=$cats_array item=cat}
{if $i2 == 5}
</tr>
<tr>
{assign var="i2" value=0}
{/if}
<td style="width:20%;">
<div style="background-color:silver;">
{$cat.cat_name}
</div>
<table>
{foreach from=$cats_array_sub item=sub}
<tr>
<td>{$sub.cat_name}</td>
</tr>
{/foreach}
</table>
</td>
{assign var="i2" value=$i2+1}
{/foreach}
</tr>
</table>
大家有什么想法
问候
【问题讨论】:
-
您可以简单地通过按父 id 索引子数组来解决这个问题:
$cats_array_sub[$row_cats_sub['parent_id']][]=$row_cats_sub;这将为您提供一个 3 维数组,其中子类别按父分组。然后在 smarty 代码中,我 认为 你可以使用:{foreach from=$cats_array_sub.$cat_id item=sub}来使用外循环的cat_id来获取内循环。我不确定 smarty 是否真的允许这样做。