Smarty 在表格(table)里输出多列多行数据的方法

摘要: Smarty 是一个非常流行的 PHP 模板引擎,她支持缓存,能在实现 MVC 构架的同时,提高程序执行效率,深受众多 PHPer 的喜爱。Smarty 提供功能全面的模板语法,如果使用得当,你能很方便的实现你想要的显示方式。

本文讨论的是一个对初学者来说非常头痛的问题:将数据分成多列显示在表格中。单条数据循环对大多数模板引擎来说,实现都非常简单,但是要每行显示多条记录就需要一些额外的设置了。本文详细说明了解决这一问题的方法,相信对初学者非常有用。
HTML:


<table border="1">
    <tr>

<?section name=site loop=$siteList?>

    <td><?$siteList[site].url?></td>

    <?if $siteListColumn > 1 ?>

    <?if $smarty.section.site.index != 0 && ($smarty.section.site.index + 1) % $siteListColumn == 0 ?>
    </tr>
    <tr>
    <?/if?>

    <?else?>
    </tr>
    <tr>
    <?/if?>

<?/section?>

    </tr>
</table>
php:


<?php // 说明:Smarty 在表格(table)里输出多列多行数据的方法 // 设置列表内容
$siteList = array(     
array('url'=>'http://www.codebit.cn'),     
array('url'=>'http://www.yitu.org'),     
array('url'=>'http://www.google.com'),    
array('url'=>'http://www.baidu.com'),     
array('url'=>'http://www.yahoo.com.cn'),     
array('url'=>'http://www.163.com'),     
array('url'=>'http://www.sohu.com'),     
array('url'=>'http://www.sina.com.cn'), ); // 列表数据统计
$siteListCount = count($siteList); // 显示列数
$siteListColumn = 3; // 如果列表数据不能将最后一行填满, // 如:共 8 条记录,每列 3 条记录,最后一行还差 1 条
if($siteListColumn > 1 && $siteListCount % $siteListColumn != 0) {     // 计算最后一行还差几列     $emptyColumn = $siteListColumn - ($siteListCount % $siteListColumn);      
for($i=0; $i<$emptyColumn; $i++)     {         // 用空值填充,保证最后一行正确显示         
$siteList[$siteListCount + $i] = array('url'=>'&nbsp;');     
}
} // 将显示列数赋值到模板
$smarty->assign('siteListColumn', $siteListColumn); // 将显示数据赋值到模板
$smarty->assign('siteList', $siteList);  
?>
此代码可以将指定数据显示在一个任意列(通过 $siteListColumn 设置)的表格中。
除了将数据显示在表格中,我们还有另外一个选择,那就是将数据显示在一个 UL 列表中,然后通过 CSS 控制 LI 的宽度,同样也能实现多列数据显示。这种方法在前台页面中也实现了数据和结构的分离,页面上只有数据,具体显示由 CSS 控制,这样,就实现了前台页面的 MVC 构架,好处多多。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值