分页函数(Smarty + Adodb)
来源:互联网 发布:新linux 安装lnmp 编辑:程序博客网 时间:2024/05/16 13:42
<?php
/*
* 作用:内容列表分页
* 时间:2006-2-21
* 作者:欣然随风
* 其它:修改于纯粹误会《Google的分页程序》
*
* 参数:
* $table 表名,必选
* $where 查询条件,可选
* $pageSize 信息数量,可选
* $midPage 导航链接数量,可选
*
*全局变量:
* $conn 数据库操作object
* $tpl 模板操作object
* $start 返回的LIMIT的开始下标
*/
function page($table,$pageSize,$midPage,$where="1=1")
{
global $conn,$tpl,$start,$total;
// 分页开始
$total = $conn->getOne("SELECT count(*) FROM $table WHERE $where");
$totalPage = ceil($total/$pageSize);
$currentPage=@$_GET['page']+0;
if(!is_numeric($currentPage) || $currentPage < 1 || empty($currentPage) || $currentPage > $totalPage)
$currentPage=1;
// 设置地址,正则替换掉
$url = preg_replace(
array("!(([&]|^)(page)[=]?([^&]+)?)|((([&]){2,})|(^[&])|([&]$))!",),
array(""),
$_SERVER["QUERY_STRING"]
);
//追加
$url.=($url?"&":"").'page';
$start = ($currentPage-1)*$pageSize;
$back = $currentPage > 1?"<a href=/"?$url=".($currentPage-1)."/" Title='上一页'><u><<</u></a>/n":"";
$next = $currentPage < $totalPage ?"<a href=/"?$url=".($currentPage+1)."/" Title='下一页'><u>>></u></a>/n":"";
$first = $currentPage > 1?"<a href=/"?$url=1/"><u>首页</u></a>/n":"";
$last = $currentPage < $totalPage?"<a href=/"?$url=$totalPage/"><u>尾页</u></a>/n":"";
for($midPages='',$i=$currentPage-$midPage,$i>0||$i=1,$end=$currentPage+$midPage,$end<=$totalPage||$end=$totalPage+1;$i<$end;$i++)
{
$midPages.=$i==$currentPage?"[$i]/n":"<a href=/"?$url=$i/"><u>$i</u></a>/n";
}
$tpl->assign("page_total", $total); // 总计
$tpl->assign("page_currentPage",$currentPage); // 当前页码
$tpl->assign("page_totalPage", $totalPage); // 总页数
$tpl->assign("page_back", $back); // 上一页
$tpl->assign("page_next", $next); // 下一页
$tpl->assign("page_first", $first); // 首页
$tpl->assign("page_last", $last); // 尾页
$tpl->assign("page_midPages", $midPages); // 中间页
$tpl->assign("page_url", $url); // 当前页地址
}
?>
测试:
$where = "1=1";
// 分页,并得到$start
page(TABLE,$pageSize=20,10,$where);
// 内容显示
$sql = "select * from ".TABLE." WHERE ".$where.";
$data = &$conn->SelectLimit($sql,$pageSize,$start);
.....
$tpl->display(page.tpl');
模板文件:
<table width="100%" cellpadding="12">
<form method=GET action="" onSubmit="val=document.getElementById('page').value;if(val>0&&val!=<{$page_currentPage}>&&val<<{$page_totalPage}>){location.href='?<{$page_url}>='+val};else{return false}">
<tr>
<td align="right">
共<{$page_total}>条
第<{$page_currentPage}>/<{$page_totalPage}>页
<{$page_first}>
<{$page_back}>
<{$page_midPages}>
<{$page_next}>
<{$page_last}>
<input name="page" type="text" size="1" class="input" value="<{$page_currentPage}>" id='page'>
<input type="submit" value="GO">
</td>
</tr>
</form>
</table>
- 分页函数(Smarty + Adodb)
- smarty+adodb+php分页原理
- adodb分页函数初读
- php试用smarty和ADODB实现对数据分页读取
- adodb-smarty 实例教程
- adodb-smarty 实例教程
- 网上一个 smarty 分页的函数
- smarty分页
- smarty分页
- smarty分页
- smarty分页
- php 之 adodb 分页
- ADODB实现分页功能
- ADODB实现分页
- adodb、smarty、memcache的工作原理
- 面向对象封装ADODB类库+Smarty模板
- adodb、smarty、memcache的工作原理
- 【smarty】smarty自定义函数
- 使用微软的实时通信API实现客户端通信
- 常用JS代码集(二)
- 浅析字符集以及PHP+Mysql4.1的乱码(转载)
- 我的创业日记3(我的office)——我的第二个家
- Windows实时通信技术的应用
- 分页函数(Smarty + Adodb)
- Lambda演算学习笔记(转)
- 转换相对路径,并创建目录
- 《C++捷径教程》读书笔记--Chapter 11--类(完结)
- 职业规划之电脑程序员的蘑菇定律
- Microsoft Windows的实时通信客户端的媒体支持
- Should Read the Message Prompted from the Computer Carefully
- 臧天朔-朋友
- VC实例学习:杀死制定进程(以杀死QQ进程为例)