Повторный стол Smarty шаблон - PullRequest
0 голосов
/ 08 января 2012

У меня есть проблема в таблице

Проблема состоит в том, чтобы повторить, я хочу, когда он достигает 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);
} 

Код 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 ]

1 голос
/ 08 января 2012

Попробуйте это:

$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. Вместо '=' устанавливается переменная для определенных значений.

0 голосов
/ 12 января 2012

Вы делаете это неправильно.

Вы должны обычно заполнять массив в 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, которая сообщает текущий индекс итерации (см. здесь ). Первое условие необходимо для поиска кратных четырем, второе - избегать печати конца строки на первой итерации.

Дайте мне знать, если это работает, я написал код без тестирования.

...