php分页中最重要的是哪些设置,实用的简单PHP分页集合包括使用方法

方法一:

/*

分页类 用于实现对多条数据分页显示

version:1.0

Date:2013-10-20

*/

/*

调用非常方便,先连接好数据库,直接传人查询的sql字符串即可,也可以指定每页显示的数据条数

例如$pages = new Page('SELECT * FROM `zy_common_member`');

或  $pages = new Page('SELECT * FROM `zy_common_member`', 10);

*/

class Page{

private $curPage;

private $totalPages;//数据总共分多少页显示

private $dispNum;//每页显示的数据条数

private $queryStr;//查询的SQL语句

private $limitStr;//查询语句后面的limit控制语句

/*

构造函数

$queryStr 查询数据的SQL语句

$dispNum  每页显示的数据条数

*/

public function __construct($queryStr='',$dispNum=10){

$result = mysql_query($queryStr);

$totalNum = mysql_num_rows($result);

$this->dispNum = $dispNum;

$this->totalPages = ceil($totalNum / $dispNum);

$this->queryStr = $queryStr;

$temp = (isset($_GET["curPage"]) ? $_GET["curPage"] : 1);

$this->setCurPage($temp);

$this->showCurPage();

$this->showFoot();

}

/*显示当前页的数据内容*/

private function showCurPage(){

$this->limitStr = ' LIMIT '.(($this->curPage - 1)* $this->dispNum).','.$this->dispNum;

//echo $this->queryStr.$this->limitStr;

$result = mysql_query($this->queryStr.$this->limitStr);

if (!$result)

{

if ($this->totalPages > 0)

{

echo '查询出错'.'
';

}

else

{

echo '无数据'.'
';

}

return;

}

$cols = mysql_num_fields($result);

echo '

echo '

';

for($i=0; $i

{

echo '

';

echo mysql_field_name($result, $i);

echo '

';

}

echo '

';

while($row = mysql_fetch_assoc($result))

{

echo '

';

foreach($row as $key=>$value)

{

echo '

';

echo $value;

echo '

';

}

echo '

';

}

echo '

';

}

private function setCurPage($curPage){

if($curPage < 1)

{

$curPage = 1;

}

else if($curPage > $this->totalPages)

{

$curPage = $this->totalPages;

}

$this->curPage = $curPage;

}

/*

显示分页页脚的信息

如首页,上一页,下一页,尾页等信息

*/

private function showFoot(){

echo '首页';

echo '上一页';

echo '下一页';

echo '尾页';

}

}

?>

方法二:

class mysqlPager{

var $pagePerNum=5;//每页显示数据项数

var $pagePerGroup=5;//每分页组中页数

var $curPage=0;//当前页,Defualt 第一页

var $totalPage=0;//总页数

var $totalNum=0;//数据项总数

var $curPageGroup=0;//当前分页组

var $curPageUrl="";//当前用到分页的 URL

var $customStyle="";//自定义风格

var $pageQuerySql="";

function mysqlPager(){//构造函数 PHP4

}

/**

* 初始化所有变量

*/

function InitAllVar($totalNum,$pagePerGroup,$curPageUrl,$curPage=1,$curPageGroup=1)

{

$this->totalNum=$totalNum;

$this->pagePerGroup=$pagePerGroup;

$this->curPageUrl=$curPageUrl;

$this->curPage=$curPage;

$this->curPageGroup=$curPageGroup;

}

/**

* 设置当前页变量

*

* @param 数字 $curPage

*/

function setCurPage($curPage)

{

$this->curPage=$curPage;

}

/**

* 设置当前分页组变量

*

* @param mixed $curPageGroup

*/

function setCurPageGroup($curPageGroup)

{

$this->curPageGroup=$curPageGroup;

}

/**

* 设置当前用到分布类的URL

* $curPageUrl string

*/

function setCurPageUrl($curPageUrl)

{

$this->curPageUrl=$curPageUrl;

}

/**

* 获取所有

*

* @param 数字 $totalNum

* @param 数字 $curPage

* @return float

*/

function getTotalPage($totalNum,$curPage=0)

{

return $this->totalPage=ceil($totalNum/$this->pagePerNum);

}

/**

* 设置用户自定义风格

*

* @param mixed $customStyle

*/

function setCustomStyle($customStyle)

{

$this->customStyle=$customStyle;

}

/**

* 设置用户自定义风格返回字符串

*

*

* @param mixed $pagerString

*/

function setCustomStyleString($pagerString)

{

return $styleString="".$pagerString."";

}

/**

* 输出导航页信息 可以不用参数,但是在使用前一定要设置相应的变量

*

* @param mixed $curPageGroup

* @param mixed $curPage

* @param mixed $curPageUrl

*/

function showNavPager($curPageGroup=0,$curPage=0,$curPageUrl=0)

{

if($curPageGroup)

{

$this->curPageGroup=$curPageGroup;

}

if($curPage)

{

$this->curPage=$curPage;

}

if($curPageUrl)

{

$this->curPageUrl=$curPageUrl;

}

$rtnString="";

//判断变量是否以经初始化

if($this->curPageGroup && $this->curPageUrl && $this->totalNum && $this->curPage)

{

$this->totalPage=$this->getTotalPage($this->totalNum);

if($this->curPage==1)

$this->curPage=($this->curPageGroup-1)*$this->pagePerGroup+1;

if($this->curPageGroup!=1)

{

$prePageGroup=$this->curPageGroup-1;

$rtnString.="".$this->setCustomStyleString("< ";

}

for($i=1;$i<=$this->pagePerGroup;$i++)

{

$curPageNum=($this->curPageGroup-1)*$this->pagePerGroup+$i;

if($curPageNum<=$this->totalPage){

if($curPageNum==$this->curPage)

{

$rtnString.=" ".$this->setCustomStyleString($curPageNum);

}else

{

$rtnString.=" curPageUrl?cpg={$this->curPageGroup}&cp=$curPageNum >";

$rtnString.=$this->setCustomStyleString($curPageNum)."";

}

}

}

if($this->curPageGrouptotalPage/$this->pagePerGroup)-1)

{

$nextPageGroup=$this->curPageGroup+1;

$rtnString.=" curPageUrl?cpg=$nextPageGroup >".$this->setCustomStyleString(">>")."";

}

$this->pageQuerySql=" limit ".(($this->curPage-1)*$this->pagePerNum).",".$this->pagePerNum;

}

else

{

$rtnString="错误:变量未初始化!";

}

return $rtnString;

}

/**

* 得到完整的查询MYSQL的Sql语句

*

* @param mixed $sql

*/

function getQuerySqlStr($sql)

{

$allsql=$sql.$this->pageQuerySql;

return $allsql;

}

/**

* 设置每页有多少数据项

*

* @param INT $num

*/

function setPagePerNum($num)

{

$this->pagePerNum=$num;

}

}

?>

使用方法:

$curPage=$_GET['cp'];

$curPageGroup=$_GET['cpg']

if($curPage=="")

$curPage=1;

if($curPageGroup=="")

$curPageGroup=1;

//都是从1开始,之前要对传入的数据进行验证,防注入

//。。。

$pager=new MysqlPager();

$pager->initAllVar(...)

$pager->showNavPager();

//后面的SQL可以是任意的输出

$sql="select id form dbname ";

$querysql=$pager->getQuerySqlStr($sql)

//以后用$querysql 查询数据库就可以得到相应的结果集了

方法三:

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;

if(!$page) $page=1;

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

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

//URL分析:

$parse_urlparse_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 条记录< BR>”;

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

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′ οnchange='window.location=\”

$url=\”+this.value'>\n”;

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

if($i==$page) $pagenav.=”< option value='$i'

selected>$i< /option>\n”;

else $pagenav.=”< option value='$i'>$i< /option>\n”;

}

$pagenav.=”< /select> 页,共 $lastpg 页”;

}

}

?>

分页时调用pageft()函数。不过它并没有输出任何东西,但产生几个全局变量供使用:$firstcount、$displaypg、$pagenav。

下面举例说明PHP分页函数的用法:

< ?

//(前面程序略)

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)){

//(列表内容略)

}

//输出分页导航条代码:

echo $pagenav;

//(后面程序略)

?>

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值