重复表Smarty模板

时间:2012-01-08 19:55:41

标签: php html templates while-loop smarty

我在表格中遇到了问题

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

代码PHP:

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

    {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} 

2 个答案:

答案 0 :(得分:1)

试试这个:

$tr = 1;
while($row = mysql_fetch_array($post_tv)){ 
    $show[] = $row; 
    if ($tr == 4){
        $tr = 1; // You have to use '=' instead of '==' 
    }
    $tr++;   
    $marsosmarty->assign("show",$show); 
    $marsosmarty->assign("tr",$tr);
} 

记住'=='是比较变量,它返回TRUE或FALSE。相反,'='是将变量设置为特定值。

答案 1 :(得分:0)

你做错了。

你必须在PHP中正常填充数组,不关心PHP代码中的表:

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

然后在显示数据时,每当当前迭代索引是四的倍数(4,8,12,...)时,您必须打印</tr><tr>。您可以使用模数运算符(Smarty中的mod,PHP中的%来完成此操作,请参阅 here )。所以,你需要这样的东西:

{section name=table loop=$show}  
  {if ($smarty.section.table.index mod 4 == 0) && ($smarty.section.table.index != 0)} </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} 

我使用了$smarty.section.table.index特殊变量来告诉你当前的迭代索引(参见 here )。搜索四的倍数需要第一个条件,第二个条件是避免在第一次迭代时打印行尾。

让我知道它是否有效,我编写的代码没有经过测试。