首页 > 编程知识 正文

分享一个php分页函数,分享一个php分页函数数据

时间:2023-12-27 22:27:37 阅读:326403 作者:RGZR

本文目录一览:

ThinkPHP使用心得分享-分页类Page的用法

ThinkPHP中的Page类在ThinkPHP/Extend/Library/ORG/Util/Page.class.php中,所以使用前要引入Page类:

复制代码

代码如下:

import('ORG.Util.Page');

//Page类的引入

$db

=

M('abc');//实例化数据表abc

$where

=

array(

'id'='2';

);//条件语句$where,例表中字段id的值为2

$count

=

$db-where($where)-count();//获取符合条件的数据总数count

$page

=

new

Page($count,

10);//实例化page类,传入数据总数和每页显示10条内容

$limit

=

$page-firstRow

.

','

.

$page-listRows;//每页的数据数和内容$limit

$result

=$db-where($where))-limit($limit)-select();//分页查询结果

$this-result

=

$result;//赋值

$this-show

=

$page-show();//获取分页的底部信息

以上代码是分页类实现的基本语句,当然喜欢使用原生sql语句的朋友也可以配合原生sql语句实现查询分页:

复制代码

代码如下:

import('ORG.Util.Page');

//Page类的引入

$db

=

M('abc');//实例化数据表abc

$where

=

array(

'id'='2';

);//条件语句$where,例表中字段id的值为2

$count

=

$db-where($where)-count();//获取符合条件的数据总数count

$page

=

new

Page($count,

10);//实例化page类,传入数据总数和每页显示10条内容

$Modle

=

new

Model();//实例化新数据模型

$sql

=

'select

id,name

from

abc

where

'.$where.'

limit

'.$page-firstRow.','.$page-listRows;//sql语句

$result

=

$Modle-query($sql);//执行sql语句

$this-result

=

$result

$this-show=$page-show();

当然,分布查询获取的内容也可以先对查询完的数据进行处理再赋值,比如

复制代码

代码如下:

...

$result

=$db-where($where))-limit($limit)-select();//分页查询结果

$res

=

abc($result);//abc方法(自定义方法或php函数)对结果$result进行数据排序或重组处理等

$this-result

=

$res;//赋值

谁来指点一下php通用分页函数该怎么写

function page($sql,$pagesize){

$nowpage=$_GET['nowpage'];//获取当前也

$result=mysql_query($sql);//执行sql查询语句

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

$totalpage = ceil($total/$pagesize);//总页数

$nowpage=$nowpage1?1:$nowpage;//保证页数始终大于或等于1

if(!$total){//如果没有记录则返回0

return 0;

exit;

}

$nowpage=$nowpage=$totalpage?$totalpage:$nowpage;//判断当前也是否大于总页数 如果大于总页数则当前页为总页数

$nowrow=($nowpage-1)*$pagesize;//当前记录的位置

$result = mysql_query($sql." limit $nowrow,$pagesize");

$url=$_SERVER['PHP_SELF'];//当页的url地址

if($nowpage==1)//如果页数只有一页 则首页和上一页无链接

$st= "div align='center'首页|上一页";

else

$st= "a href=$url?nowpage=1首页/a | a href=$url?nowpage=".($nowpage-1)."上一页/a";

if($nowpage==$totalpage) //如果页数是最后一页 则末页和下一页无链接

$st.="| 下一页 | 末页 ";

else

$st.= "| a href=$url?nowpage=".($nowpage+1)."下一页/a | a href=$url?nowpage=$totalpage末页/a";

$st.= " 到第 select name='nowpage' size='1' onchange='window.location="$url?nowpage="+this.value'n";//指定跳转至哪一页

$st.="option value='$nowpage' select$nowpage/optionn";

for ($i = 1; $i = $totalpage; $i++) {

if ($i == $nowpage){}

else

$st.="option value='$i'$i/optionn";

}

$st.="/select 页/br";

$st.="页次:".$nowpage." /". $totalpage."页 共".$total."条信息" ;

return array($result,$st);

}

自定义PHP分页函数

以下为引用的内容:

?

//为了避免重复包含文件而造成错误,加了判断函数是否存在的条件:

if(!function_exists(pageft)){

//定义函数pageft(),三个参数的含义为:

//$totle:信息总数;

//$displaypg:每页显示信息数,这里设置为默认是20;

//$url:分页导航中的链接,除了加入不同的查询信息“page”外的部分都与这个URL相同。

// 默认值本该设为本页URL(即$_SERVER["REQUEST_URI"]),但设置默认值的右边只能为常量,所以该默认值设为空字符串,在函数内部再设置为本页URL。

function pageft($totle,$displaypg=20,$url=''){

//定义几个全局变量:

//$page:当前页码;

//$firstcount:(数据库)查询的起始项;

//$pagenav:页面导航条代码,函数内部并没有将它输出;

//$_SERVER:读取本页URL“$_SERVER["REQUEST_URI"]”所必须。

global $page,$firstcount,$pagenav,$_SERVER;

//为使函数外部可以访问这里的“$displaypg”,将它也设为全局变量。注意一个变量重新定义为全局变量后,原值被覆盖,所以这里给它重新赋值。

$GLOBALS["displaypg"]=$displaypg;

$page=$_GET['page'];

if(!$page) $page=1;

//如果$url使用默认,即空值,则赋值为本页URL:

if(!$url){ $url=$_SERVER["REQUEST_URI"];}

//URL分析:

$parse_url=parse_url($url);

$url_query=$parse_url["query"]; //单独取出URL的查询字串

if($url_query){

//因为URL中可能包含了页码信息,我们要把它去掉,以便加入新的页码信息。

//这里用到了正则表达式,请参考“PHP中的正规表达式”()

$url_query=ereg_replace("(^|)page=$page","",$url_query);

//将处理后的URL的查询字串替换原来的URL的查询字串:

$url=str_replace($parse_url["query"],$url_query,$url);

//在URL后加page查询信息,但待赋值:

if($url_query) $url.="page"; else $url.="page";

}else {

$url.="?page";

}

//页码计算:

$lastpg=ceil($totle/$displaypg); //最后页,也是总页数

$page=min($lastpg,$page);

$prepg=$page-1; //上一页

$nextpg=($page==$lastpg ? 0 : $page+1); //下一页

$firstcount=($page-1)*$displaypg;

//开始分页导航条代码:

$pagenav="显示第 B".($totle?($firstcount+1):0)."/B-B".min($firstcount+$displaypg,$totle)."/B 条记录,共 $totle 条记录";

//如果只有一页则跳出函数:

if($lastpg=1) return false;

$pagenav.=" a href='$url=1'首页/a ";

if($prepg) $pagenav.=" a href='$url=$prepg'前页/a "; else $pagenav.=" 前页 ";

if($nextpg) $pagenav.=" a href='$url=$nextpg'后页/a "; else $pagenav.=" 后页 ";

$pagenav.=" a href='$url=$lastpg'尾页/a ";

//下拉跳转列表,循环列出所有页码:

$pagenav.=" 到第 select name='topage' size='1' onchange='window.location="$url="+this.value'n";

for($i=1;$i=$lastpg;$i++){

if($i==$page) $pagenav.="option value='$i' selected$i/optionn";

else $pagenav.="option value='$i'$i/optionn";

}

$pagenav.="/select 页,共 $lastpg 页";

}

}

?

php=mysql调用方法:

?

//(前面程序略)

include("pageft.php"); //包含“pageft.php”文件

//取得总信息数

$result=mysql_query("select * from mytable");

$total=mysql_num_rows($result);

//调用pageft(),每页显示10条信息(使用默认的20时,可以省略此参数),使用本页URL(默认,所以省略掉)。

pageft($total,10);

//现在产生的全局变量就派上用场了:

$result=mysql_query("select * from mytable limit $firstcount,$displaypg ");

while($row=mysql_fetch_array($result)){

//(列表内容略)

}

?

//-----------用法

连接sqlserver

?php

$query="select * from zhufu";

$result=mssqlresult($query);

$numrows = mssql_num_rows($result);

$pagesize=20;

$Url="index.php";

pageft($numrows,$pagesize,$Url);

$sql = "select top $pagesize * from zhufu where (id not in (select top $firstcount id from zhufu order by id desc)) order by id desc";

//echo $sql;

$result1= mssqlresult($sql);

while( $row=mssql_fetch_assoc($result1))

{

$row1=trim($row["city"]).trim($row["xuexiao"]);

echo

"tr

td class='bline fontblack' align = 'center'".$row["id"]."/td

td class='bline' align='left'span class='fontgreen'font color='green'".trim(iconv("gb2312","utf-8",$row["sendname"]))."/font /span给".trim(iconv("gb2312","utf-8",$row1))."的font color='blue'".trim(iconv("gb2312","utf-8",$row["name"]))."/font 的祝福:a href='info.php?id=".$row["id"]."' target='_blank'font color='#E60638'".trim((cut_str(iconv("gb2312","utf-8",$row["neirong"]),20)))."..../font/a/td

td class='bline' align = 'center'".$row["riqi"]."/td

/tr

";

}

?

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。