Как распечатать набор записей с помощью Smarty? - PullRequest
1 голос
/ 13 октября 2011

Мне нужно показать результат запроса (mysql), как я могу зациклить набор записей без присвоения значений массиву? Теперь я делаю:

while($row = $this->mysql->fetch($rs)){
  val[] = $row
}
$this->smarty->assign('val', val);

затем (в template.tpl)

{section name=nr loop=$val}
{$val[nr].cod}<br />
{sectionelse}
<h1>No record</h1>
{/section}

Как я могу его оптимизировать?

Ответы [ 2 ]

1 голос
/ 13 октября 2011

Вы можете использовать foreach Smarty, хотя он не делает его короче:

{if $val}
    {foreach from=$val item=nr}
        {$nr.cod}<br />
    {/foreach}
{else}
    <h1>No record</h1>
{/if}
0 голосов
/ 13 октября 2011

возможно {html_table} может помочь.В противном случае вы можете перебирать строки и столбцы так, как вам нравится:

{foreach $val as $row}
  {if $row@first}
    <table>
    <tbody>
  {/if}
  {foreach $row as $cell}
      {if $cell@first}
        <tr>
      {/if}

      <td>{$cell|escape:"html}</td>

      {if $cell@last}
        </tr>
      {/if}
  {foreach}
  {if $row@last}
    </tbody>
    </table>
  {/if}
{foreachelse}
  <p>No Data</p>
{/foreach}

(синтаксис Smarty3 {foreach} )

Вы также можете выводить ячейки'ключи:

{foreach $val as $row}
  {if $row@first}
    <table>
    <thead>
    <tr>
    {foreach $row as $cell}
      <th>{$cell@key|escape:"html}</th>
    {/foreach}
    </tr>
    </thead>
    <tbody>
  {/if}
  {foreach $row as $cell}
      {if $cell@first}
        <tr>
      {/if}

      <td>{$cell|escape:"html}</td>

      {if $cell@last}
        </tr>
      {/if}
  {foreach}
  {if $row@last}
    </tbody>
    </table>
  {/if}
{foreachelse}
  <p>No Data</p>
{/foreach}
...