我有这个Smarty代码来获取数据:
$sel=mysql_query("select id, name from form");
$smarty->assign('contact', mysql_fetch_row($sel));
$smarty->display('testfunction.tpl');
我的模板文件:
<ul>
{foreach from=$contact item=foo}
<li>{$foo}</li>
{/foreach}
</ul>
输出:
1
a
但我希望输出如下:
1:a
2:b
答案 0 :(得分:1)
如果你使用mysql_fetch_row
,它就完全按照它的说法 - 它取一行但不多于一行。我的猜测是你的结果集看起来像这样(如果我弄错了,请在你的问题中澄清):
id | name
----+------------
1 | a
2 | b
解决这个问题的一种方法是建立一个数组,然后你可以用Smarty拆分它,就像这样:
/* PHP code */
$your_array = array();
$sel=mysql_query("select id, name from form");
while($row=mysql_fetch_array($sel)) {
$your_array[] = $row;
}
$smarty->assign('contact', $your_array);
$smarty->display('testfunction.tpl');
你现在在Smarty中有一个数组基本上是这样的:
[1] => (
[0] => 1,
[1] => a
),
[2] => (
[0] => 2,
[1] => b
)
这可以像你描述的那样显示:
{* Smarty Code *}
<ul>
{foreach from=$contact item=foo}
<li>{$foo[0]}: {$foo[1]}</li>
{/foreach}
</ul>
我没有尝试过,但它应该做的工作。如果操作不正确,请在模板中使用{debug}
查看数组$contact
的形成方式。
另一个忠告:
您在此处使用的PHPs mysql连接器已弃用。强烈建议不要使用此扩展名。相反,应使用MySQLi或PDO_MySQL扩展名。