我在表格中遇到了问题
问题是重复我希望当它到达4行时将表转移到新行
$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);
}
{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}
答案 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 )。搜索四的倍数需要第一个条件,第二个条件是避免在第一次迭代时打印行尾。
让我知道它是否有效,我编写的代码没有经过测试。