请教PHP一个分页函数的问题,明白人指点一下,不明白的共同学习啊~!
时间:2010-08-14
来源:互联网
请教各位,下面是我在网上找的smarty分页函数,现在分页的页码已经没问题,主要问题有以下几点:
1.如何在模板文件中显示每页内容;
2.蓝色部分注释说内容显示但我没太看明白怎么显示;
3.黄色部分$where="1=1";加这一句有什么意义;
4.注释中的“ 分页,并得到$start”start是起什么作用;
不好意思,虽然我的问题太多了,我也知道问题比较菜,各位大侠不要笑话我啊,可是我研究好久了,就是没搞定分页函数这个问题,如果你懂的话就不吝赐教一下好吗,助人为快乐之本嗯,帮助别人的同时也是在提高自己嘛,我这个人特别讲义气,滴水之恩会当涌泉相报,不明白的朋友也帮我顶顶啊,让我们共同进步~!!!!
函数
---------------------------------------------------------------------------------------------------------------
<?php
/**
* 函数:(Adodb + Smarty) 内容列表分页
* 版本:最终(完美处理了导航链接)
* 已通过Mysql、Oracle 测试
* 时间:2006/9/29
* 作者:欣然随风
*
* 参数:
* @table -- 表名
* @pageSize-- 每页信息数
* @midPage -- 导航链接数量
* @where -- 查询条件
*
* 全局变量:
* @conn -- 数据库操作object
* @tpl -- 模板操作object
* @start -- 返回的LIMIT的开始下标
*
*/
function page($table,$pageSize,$midPage,$where="1=1")
{
global $conn,$tpl,$start;
// 分页开始
$total = $conn->getOne("Select COUNT(*) FROM $table Where $where");
$totalPage = ceil($total/$pageSize);
$currentPage=@$_REQUEST['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":"";
// 导航链接
$midPages = '';
$num = $currentPage-floor($midPage/2);
if($num > 0)
{
if(($totalPage-$num) < $midPage)
{
$tmp = $totalPage - $midPage;
$num = $tmp< 0 ? 1 : ++$tmp;
}
}else $num = 1;
for($i=1; $i<=$midPage;$i++,$num++)
{
if($num > $totalPage) break;
$midPages .= ($num == $currentPage) ? '['.$num.'] '
: "<a href='?".$url."=".$num."'><u>".$num."</u></a> ";
}
$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.
模版:
---------------------------------------------------------------------------------------------
<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>
1.如何在模板文件中显示每页内容;
2.蓝色部分注释说内容显示但我没太看明白怎么显示;
3.黄色部分$where="1=1";加这一句有什么意义;
4.注释中的“ 分页,并得到$start”start是起什么作用;
不好意思,虽然我的问题太多了,我也知道问题比较菜,各位大侠不要笑话我啊,可是我研究好久了,就是没搞定分页函数这个问题,如果你懂的话就不吝赐教一下好吗,助人为快乐之本嗯,帮助别人的同时也是在提高自己嘛,我这个人特别讲义气,滴水之恩会当涌泉相报,不明白的朋友也帮我顶顶啊,让我们共同进步~!!!!
函数
---------------------------------------------------------------------------------------------------------------
<?php
/**
* 函数:(Adodb + Smarty) 内容列表分页
* 版本:最终(完美处理了导航链接)
* 已通过Mysql、Oracle 测试
* 时间:2006/9/29
* 作者:欣然随风
*
* 参数:
* @table -- 表名
* @pageSize-- 每页信息数
* @midPage -- 导航链接数量
* @where -- 查询条件
*
* 全局变量:
* @conn -- 数据库操作object
* @tpl -- 模板操作object
* @start -- 返回的LIMIT的开始下标
*
*/
function page($table,$pageSize,$midPage,$where="1=1")
{
global $conn,$tpl,$start;
// 分页开始
$total = $conn->getOne("Select COUNT(*) FROM $table Where $where");
$totalPage = ceil($total/$pageSize);
$currentPage=@$_REQUEST['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":"";
// 导航链接
$midPages = '';
$num = $currentPage-floor($midPage/2);
if($num > 0)
{
if(($totalPage-$num) < $midPage)
{
$tmp = $totalPage - $midPage;
$num = $tmp< 0 ? 1 : ++$tmp;
}
}else $num = 1;
for($i=1; $i<=$midPage;$i++,$num++)
{
if($num > $totalPage) break;
$midPages .= ($num == $currentPage) ? '['.$num.'] '
: "<a href='?".$url."=".$num."'><u>".$num."</u></a> ";
}
$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.
模版:
---------------------------------------------------------------------------------------------
<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>
作者: hui92984 发布时间: 2010-08-14
在顶一下,谁帮帮忙啊,~!
作者: hui92984 发布时间: 2010-08-14
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28