php关键字传到分页,php中带关键字搜索功能的分页函数的设计及实例

在网站中经常用到分页功能,因此将分页功能封装成一个函数,在调用时可以减少编程工作量。

1. 分页函数的设计:

这里分页函数输入有五个参数:记录总数$RecordTotalNum,每页显示的记录数$PerPageSize,当前显示的页数$Page,当前页的$url,查询关键字$keyword,只要设置好这5个参数(如果没有查询关键字$keyword可不设计),就可以调用分页函数了。

该分页函数的功能主要是输出分页的链接,下面是分页函数1.php中的page()函数代码:

function page($RecordTotalNum,$PerPageSize,$Page,$url,$keyword) {

$PageCount=ceil($RecordTotalNum/$PerPageSize); //计算总页数

$page_previous=($Page<=1)?1:($Page-1); //计算上一页的页数

$page_next=($Page>=$PageCount)?$PageCount:($Page+1); //计算下一页的页数

$page_start=($Page-5>0)?($Page-5):0; //只显示本页前5页的页码链接

$page_end=($page_start+10

//若超过10页,只显示本页前后5页的链接

$page_start=$page_end-10;

if ($page_start<0) $page_start=0; //若当前不合法,更正

$parse_url=parse_url($url); //判断$url中是否存在【URL字符串】

if (empty($parse_url['query']))

$url=$url.'?'; //若不存在,在$url后添加?

else

$url=$url.'&'; //若存在,在$url后添加&

//var_dump($RecordTotalNum,$PerPageSize,$Page,$url,$keyword,$page_start,$page_end); 用于调试

if (empty($keyword)) {

if ($Page==1)

$navigator="[首页] [上一页] ";

else

$navigator=" [首页] [上一页] ";

for ($i=$page_start; $i < $page_end; $i++) {

$j=$i+1;

if ($j==$Page)

$navigator=$navigator."$j ";

else

$navigator=$navigator."$j ";

}

if ($Page==$PageCount)

$navigator=$navigator." [下一页][末页]";

else

$navigator=$navigator." [下一页] [末页]";

$navigator.="  共".$RecordTotalNum."条记录   $Page/$PageCount 页";

}

else { //如果设置了查询关键词,则将查询关键字加到URL链接中

if ($Page==1)

$navigator="[首页] [上一页] ";

else

$navigator=" [首页] [上一页] ";

for ($i=$page_start; $i < $page_end; $i++) {

$j=$i+1;

if ($j==$Page)

$navigator=$navigator."$j ";

else

$navigator=$navigator."$j ";

}

if ($Page==$PageCount)

$navigator=$navigator." [下一页][末页]";

else

$navigator=$navigator." [下一页] [末页]";

$navigator.="  共".$RecordTotalNum."条记录   $Page/$PageCount 页";

}

echo $navigator; //输出分页链接

}

?>

2. 分页函数的实例:

下面代码通过调用分页函数来实现分页,代码如下:

$conn=mysql_connect("localhost","root","098933mabing"); //连接数据库服务器

mysql_query("set names 'utf-8'"); //设置字符集

mysql_select_db("guestbook",$conn); //选择数据库

?>

require("1.php"); //调用分页函数所在文件

require("conn.php");

if (isset($_GET['Page']) && (int) $_GET['Page']>0) //获取页码并检查是否非法

$Page=$_GET['Page'];

else

$Page=1; //如果获取不到页码则显示第一页

$keyword=$_GET['keyword']; //获得关键字

if ($keyword<>"")

$result=mysql_query("select * from lyb where title like '%$keyword%'",$conn); //模糊匹配

else

$result=mysql_query("select * from lyb",$conn);

$RecordTotalNum=mysql_num_rows($result); //记录总数

if ($RecordTotalNum<=0) { //判断查询结果是否为空

echo ""; //刷新

exit(); //提前退出脚本程序

}

if (isset($_GET['PerPageSize'])) { //每页显示的记录数

$PerPageSize=$_GET['PerPageSize'];

$_SESSION["PerPageSize"]=$_GET['PerPageSize']; //该值保存到Session变量中,防止切换页面$PerPageSize又恢复默认值

}

if ($_SESSION["PerPageSize"]>0) //如果Session变量不为空(超过$RecordTotalNum会显示最大记录数)

$PerPageSize=$_SESSION["PerPageSize"];

else

$PerPageSize=2; //第一次进入或输入不合法时默认显示2条

?>

根据标题查找留言:请输入关键字

自定义每页记录数的分页程序

每页显示 条

ID号标题内容作者邮箱IP号添加时间性别

mysql_data_seek($result, ($Page-1)*$PerPageSize); //将指针指向第$Page页的第一条记录

for ($i=0; $i < $PerPageSize ; $i++) {

$row=mysql_fetch_assoc($result);

if ($row) { //如果记录不为空,用于处理末页的情况【比如末页的个数不为$PerPageSize个】

?>

= $row['ID'] ?>= $row['title'] ?>= $row['content'] ?>= $row['author'] ?>= $row['Email'] ?>= $row['IP'] ?>= $row['addtime'] ?>= $row['sex'] ?>

$url=$_SERVER["PHP_SELF"]; //获得当前页的URL

page($RecordTotalNum,$PerPageSize,$Page,$url,$keyword); //调用分页函数

?>

【注】该程序预先在MySql服务器中的guestbook数据库中包含一张名为lyb的表。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值