在Smarty + Php表中重复

时间:2012-01-08 16:11:55

标签: php html while-loop html-table smarty

我在表格中遇到了问题

问题是重复我希望当它到达4行时将表转移到新行

代码PHP:

    // for : 
$tr = 1;
while($row = mysql_fetch_array($post_tv)){ 
    $show[] = $row; 
    if ($tr == 4){
        $tr == 1;
    }
    $tr++;   
    $marsosmarty->assign("show",$show); 
    $marsosmarty->assign("tr",$tr);
} 

Code Html smarty:

<td width="91"><table width="100" height="100" border="0" cellpadding="1" cellspacing="1" bgcolor="#666666">
<tbody><tr>
    {section name=table loop=$show}  
    {if $tr eq 3} </tr><tr> {/if} 
    <td bgcolor="#FFFFFF">
        <a href="./channel.php?id={$show[table].id}" target="az">
            <img src="{$show[table].a_IMG}" alt="{$show[table].a_DESC}" width="100" height="100" border="0" class="link-img" title="{$show[table].a_TITLE}">
        </a>
    </td>
    {/section} 
</tr>

1 个答案:

答案 0 :(得分:2)

首先,你在每次迭代中重新分配tr,并在循环时将模板提取到外面,所以这没有任何意义。您应该在获取所有结果后分配变量:

while($row = mysql_fetch_array($post_tv)){ 
    $show[] = $row; 
}
$marsosmarty->assign("show", $show);

要移动到表格中的下一行,您可以使用部分名称和模运算符,如下所示:

<td width="91"><table width="100" height="100" border="0" cellpadding="1" cellspacing="1" bgcolor="#666666">
<tbody><tr>
    {section name=table loop=$show}
    <td bgcolor="#FFFFFF">
        <a href="./channel.php?id={$show[table].id}" target="az">
            <img src="{$show[table].a_IMG}" alt="{$show[table].a_DESC}" width="100" height="100" border="0" class="link-img" title="{$show[table].a_TITLE}">
        </a>
    </td>
    {if !$smart.section.table.last && $smart.section.table.iteration % 4 eq 0}
         </tr><tr>
    {/if}
    {/section}
</tr>

这样,在显示4个单元格后,会创建新的表格行(仅当有更多单元格时,才会确保此!$smart.section.table.last条件)