Smarty输出类别和子类别

时间:2015-01-24 20:04:08

标签: php mysqli smarty

我正在尝试在html表中输出类别和子类别 我有一个问题,所有子类别都打印在所有类别下

我使用这个公式

  • CAT_ID
  • cat_name
  • 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>

任何想法的人

此致

1 个答案:

答案 0 :(得分:0)

以下代码可以解决您的问题:

$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[$row_cats['cat_id']]['sub'][]=$row_cats_sub; 
    }
    $cats_array[$row_cats['cat_id']]['cat_id']=$row_cats['cat_id'];
    $cats_array[$row_cats['cat_id']]['cat_name']=$row_cats['cat_name'];
    $cats_array[$row_cats['cat_id']]['cat_parent']=$row_cats['cat_parent'];
}

$cats->free_result();
$cats_sub->free_result();

$t->assign('cats_array',$cats_array);
$t->display('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>

我不知道你需要什么$ i2 如果没有使用,请将其从模板中删除。