Вы делаете это неправильно.
Вы должны обычно заполнять массив в PHP, не заботясь о таблице в вашем коде PHP:
while($row = mysql_fetch_array($post_tv)){
$show[] = $row;
}
$marsosmarty->assign("show",$show);
Затем при отображении данных вы должны печатать </tr><tr>
каждый раз, когда текущий индекс итерации кратен четырем (4, 8, 12, ...). Это можно сделать с помощью оператора модуля (mod
в Smarty, %
в PHP, см. здесь ). Итак, вам нужно что-то вроде:
{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
, которая сообщает текущий индекс итерации (см. здесь ). Первое условие необходимо для поиска кратных четырем, второе - избегать печати конца строки на первой итерации.
Дайте мне знать, если это работает, я написал код без тестирования.