setCurPage($temp);$this->showCurPage();$this->showFoot();}/*显示当前页的数据内容*/"> 跳转到主内容
极星编程网:以代码为星,赴技术山海!

实用的简单PHP分页集合包括使用方法_php实例

方法一:

复制代码代码如下:php
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                 {$curPage = 1;}else if($curPage > $this->totalPages){$curPage = $this->totalPages;}$this->curPage = $curPage;}/*显示分页页脚的信息如首页,上一页,下一页,尾页等信息*/ private function showFoot(){echo '首页';echo '上一页';echo '下一页';echo '尾页';}}?>

方法二:

复制代码代码如下:php
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;$ipagePerGroup;$i++){$curPageNum=($this->curPageGroup-1)*$this->pagePerGroup+$i;if($curPageNumtotalPage){if($curPageNum==$this->curPage){$rtnString.=" ".$this->setCustomStyleString($curPageNum);}else{$rtnString.="curPageUrl?cpg={$this->curPageGroup}&cp=$curPageNum >";$rtnString.=$this->setCustomStyleString($curPageNum)."";}}}if($this->curPageGroup totalPage/$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=”显示第 ”.($totle?($firstcount+1):0).”

-”.min($firstcount+$displaypg,$totle).”

条记录,共 $totle 条记录”;//如果只有一页则跳出函数:if($lastpg$pagenav.=” 首页 “;if($prepg) $pagenav.=”

前页 “; else $pagenav.=” 前页 “;if($nextpg) $pagenav.=”

后页 “; else $pagenav.=” 后页 “;$pagenav.=” 尾页 “;//下拉跳转列表,循环列出所有页码:$pagenav.=” 到第 size='1′ onchange='window.location=\”

$url=\”+this.value'>\n”;for($i=1;$iif($i==$page) $pagenav.=” selected>$i\n”;else $pagenav.=”$i\n”;}$pagenav.=” 页,共 $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;//(后面程序略)

?>

相关文章