Smarty:数组到表

时间:2013-09-19 10:18:03

标签: php arrays html-table smarty

<table class="table table-striped table-framed table-centered">
    <thead>
        <tr>
            {foreach from=$columns key=num item=columninfo}
                <th><font color="black">{$columninfo.columnname}</font></th>
            {/foreach}
            <th>&nbsp;</th>
        </tr>
    </thead>
    <tbody>
        {foreach from=$rows key=num item=rowinfo}
            <tr>
                <td><font color="black">{$rowinfo}</font></td>
                <td><a href="database.php?action=viewtable&table={$tableinfo.tablename}&database={$currentdatabase}"><input class="btn btn-danger" type="button" value="Delete" onclick="return confirm('Are you sure you would like to delete this row?');"/></td></a>
            </tr>
        {/foreach}
    </tbody>
</table>

我一直试图让它输出数组中的所有数据,但是第二个数组$ rows没有输出任何数据。

第一个效果很好,并输出列的所有名称。

第二个数组看起来像这样。

Array ( [0] => Array ( [ID] => 3 [Name] => Eirik [Age] => 20 ) )

我要做的是创建一个数据库管理系统,您可以在其中访问数据库并查看表,列和行。目前我只缺少要完成的行。它获取所有列名称,并生成表头,然后转到行。这里的问题是,当我尝试将行打印到表中时,我不能使用列名来访问数组,因为每个数据库的列名都不同。

1 个答案:

答案 0 :(得分:1)

你走在正确的轨道上:只需遵循第一个foreach中使用的相同模式。

$rowinfo是一个数组,如果要打印它们,则需要访问其元素。只需编写$rowinfo['ID'](或$rowinfo.ID)即可访问$rowinfo数组的ID元素。

对要打印的每个元素重复。

附注:您可以为foreach块使用更清晰的PHP语法:

{foreach $rows as $num => $rowinfo}

相当于

{foreach from=$rows key=num item=rowinfo}

但在我看来更具可读性。

关于编辑,如何打印具有不同列(名称和可能的编号)的动态数组,您可以尝试以下方法:

 {foreach $rows as $num => $rowinfo}
      <tr>
          <td>
          {foreach $rowinfo as $key => $value}
              {$key}: {$value} {* /*of course you'll need to decide HOW to render them */ *}
          {/foreach}
          </td>
          <td>[...]</td></a>
      </tr>
 {/foreach}

基本上,你将使用外部foreach循环你在第二个数组中获得的所有行。在内部的内容中,您将循环遍历单行的内容,选择其键(列名称)及其关联值。