smarty下分页的简单实现

smarty下实现的分页,可以之间显示的页数范围可调($ShowPageNum)。

图片为该值设为2时的截图(设为2时,即显示当前页的前后两页的直接链接)。


php代码:

<?php

// 初始化相关,具体见官网实例:
// http://www.smarty.net/docsv2/en/installing.smarty.extended.tpl
require('setup.php');
// 具体的数据操作,与分页无关,可以无视
require('common/sql_actions.php');

$smarty = new Smarty_GuestBook();

/******* for Pages ***********/
$id; // 模拟实际应用需要传递给其他页的参数
$id = isset($_GET['id'])?intval($_GET['id']):555;
echo $id;
$smarty->assign('id', $id);

$page = isset($_GET['page'])?intval($_GET['page']):1;
$offset = $page - 1;
$EachCnt = 2;

$condition = "";	// 实际搜索的逻辑条件
$condition .= "limit ".$offset * $EachCnt.", ".$EachCnt;
$sql_rows = sql_get_infos($condition); 	// 根据条件搜索EachCnt条数据
$smarty->assign('resultID', $sql_rows);			// 将搜索结果传给tpl

$total_count = sql_get_cnt($condition);

/******** set the start and end page ****/
$ShowPageNum = 2;	// 直接显示本页前后的ShowPageNum页的链接
$total_page = ceil($total_count/$EachCnt); // 如果有余,向上取整
$start_page = 1;
$end_page = $total_page;

// 如果本页前$ShowPageNum页没有到首页,则计算显示页号的首数字
if ($page - $ShowPageNum > 1)	
{
    $start_page = $page - $ShowPageNum;
}
// 如果本页后$ShowPageNum页没有到尾页,则计算显示页号的尾数字
if ($page + $ShowPageNum < $end_page)
{
    $end_page = $page + $ShowPageNum;
}

// 将显示页号的数字范围传给tpl,这个传法有点2,暂时这样
$page_array = array();
for ($i = $start_page;  $i < $end_page + 1; $i++)
{
    array_push($page_array, $i);
}

$smarty->assign('current_page', $page);
$smarty->assign('total_page', $total_page);
$smarty->assign('each_cnt', $EachCnt);
$smarty->assign('page_array', $page_array);
$smarty->assign('page_end', $end_page);

$smarty->display('my_pages.tpl');

?>

tpl中的前端代码:

{* Smarty *}
{config_load file='my_pages.conf'}
<html>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<body>

{* 模拟实际输出查询得出的N个数据 *}
{foreach from=$resultID key=k item=v}
<p>{$v.oid}</p>
{/foreach}
<p>

<p>
当前{$current_page}/{$total_page}页

<!--URL需要替换成实际URL,此处写法为从配置文件读取URL-->
【<a href='{#URL#}?page=1&id={$id}'>首页</a>】 

{if $current_page > 1}
【<a href='{#URL#}?page={$current_page-1}&id={$id}'>上一页</a>】 
{/if}

{foreach from=$page_array key=k item=v}
<a href='{#URL#}?page={$v}?id={$id}'>{$v}</a> 
{/foreach}

{if $current_page < $total_page}
【<a href='{#URL#}?page={$current_page+1}?id={$id}'>下一页</a>】 
{/if}

【<a href='{#URL#}?page={$total_page}?id={$id}'>尾页</a>】 
</p>

</body>
</html>



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值