學(xué)習(xí)啦>知識(shí)大全>方法百科>產(chǎn)品使用方法>

php分頁(yè)類的使用方法

時(shí)間: 陳哲凡673 分享

  PHP分頁(yè)類是一個(gè)比較有用的類,如何靈活的運(yùn)用這個(gè)類來(lái)幫助我們完成功能的實(shí)現(xiàn)是一個(gè)程序員必備的知識(shí)。下面由學(xué)習(xí)啦小編整理了幾種php分頁(yè)類的使用方法,希望對(duì)大家有所幫助。

  php分頁(yè)類的使用方法(一)

  <?php

  /*

  分頁(yè)類 用于實(shí)現(xiàn)對(duì)多條數(shù)據(jù)分頁(yè)顯示

  version:1.0

  Date:2013-10-20

  */

  /*

  調(diào)用非常方便,先連接好數(shù)據(jù)庫(kù),直接傳人查詢的sql字符串即可,也可以指定每頁(yè)顯示的數(shù)據(jù)條數(shù)

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

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

  */

  class Page{

  private $curPage;

  private $totalPages;//數(shù)據(jù)總共分多少頁(yè)顯示

  private $dispNum;//每頁(yè)顯示的數(shù)據(jù)條數(shù)

  private $queryStr;//查詢的SQL語(yǔ)句

  private $limitStr;//查詢語(yǔ)句后面的limit控制語(yǔ)句

  /*

  構(gòu)造函數(shù)

  $queryStr 查詢數(shù)據(jù)的SQL語(yǔ)句

  $dispNum 每頁(yè)顯示的數(shù)據(jù)條數(shù)

  */

  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();

  }

  /*顯示當(dāng)前頁(yè)的數(shù)據(jù)內(nèi)容*/

  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 '查詢出錯(cuò)'.'<br>';

  }

  else

  {

  echo '無(wú)數(shù)據(jù)'.'<br>';

  }

  return;

  }

  $cols = mysql_num_fields($result);

  echo '<table border="1">';

  echo '<tr>';

  for($i=0; $i<$cols; $i++)

  {

  echo '<th>';

  echo mysql_field_name($result, $i);

  echo '</th>';

  }

  echo '</tr>';

  while($row = mysql_fetch_assoc($result))

  {

  echo '<tr>';

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

  {

  echo '<td>';

  echo $value;

  echo '</td>';

  }

  echo '</tr>';

  }

  echo '</table>';

  }

  private function setCurPage($curPage){

  if($curPage < 1)

  {

  $curPage = 1;

  }

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

  {

  $curPage = $this->totalPages;

  }

  $this->curPage = $curPage;

  }

  /*

  顯示分頁(yè)頁(yè)腳的信息

  如首頁(yè),上一頁(yè),下一頁(yè),尾頁(yè)等信息

  */

  private function showFoot(){

  echo '<a href="?curPage=1">首頁(yè)</a>';

  echo '<a href="?curPage='.($this->curPage - 1).'">上一頁(yè)</a>';

  echo '<a href="?curPage='.($this->curPage + 1).'">下一頁(yè)</a>';

  echo '<a href="?curPage='.$this->totalPages.'">尾頁(yè)</a>';

  }

  }

  ?>

  php分頁(yè)類的使用方法(二)

  < ?php

  //為了避免重復(fù)包含文件而造成錯(cuò)誤,

  加了判斷函數(shù)是否存在的條件:

  if(!function_exists(pageft)){

  //定義函數(shù)pageft(),三個(gè)參數(shù)的含義為:

  //$totle:信息總數(shù);

  //$displaypg:每頁(yè)顯示信息數(shù),這里設(shè)置為默認(rèn)是20;

  //$url:分頁(yè)導(dǎo)航中的鏈接,除了加入不同的

  查詢信息“page”外的部分都與這個(gè)URL相同。

  //默認(rèn)值本該設(shè)為本頁(yè)URL(即$_SERVER

  ["REQUEST_URI"]),但設(shè)置默認(rèn)值的右邊

  只能為常量,所以該默認(rèn)值設(shè)為空字符串,在函數(shù)內(nèi)部再設(shè)置為本頁(yè)URL。

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

  //定義幾個(gè)全局變量:

  //$page:當(dāng)前頁(yè)碼;

  //$firstcount:(數(shù)據(jù)庫(kù))查詢的起始項(xiàng);

  //$pagenav:頁(yè)面導(dǎo)航條代碼,函數(shù)內(nèi)部并沒(méi)有將它輸出;

  //$_SERVER:讀取本頁(yè)URL“$_SERVER["REQUEST_URI"]”所必須。

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

  //為使函數(shù)外部可以訪問(wèn)這里的“$displaypg”,將它也設(shè)為全局變量。注意一個(gè)變量重新定義,為全局變量后,原值被覆蓋,所以這里給它重新賦值。

  $GLOBALS["displaypg"]=$displaypg;

  if(!$page) $page=1;

  //如果$url使用默認(rèn),即空值,則賦值為本頁(yè)URL:

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

  //URL分析:

  $parse_urlparse_url=parse_url($url);

  $url_query=$parse_url["query"]; //單獨(dú)取出URL的查詢字串

  if($url_query){

  //因?yàn)閁RL中可能包含了頁(yè)碼信息,

  我們要把它去掉,以便加入新的頁(yè)碼信息。

  //這里用到了正則表達(dá)式

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

  //將處理后的URL的查詢字串替換原來(lái)的URL的查詢字串:

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

  //在URL后加page查詢信息,但待賦值:

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

  }else {

  $url.="?page";

  }

  //頁(yè)碼計(jì)算:

  $lastpg=ceil($totle/$displaypg); //最后頁(yè),也是總頁(yè)數(shù)

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

  $prepg=$page-1; //上一頁(yè)

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

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

  //開(kāi)始分頁(yè)導(dǎo)航條代碼:

  $pagenav="顯示第 <B>".($totle?($firstcount+1):0)."

  </B>-<B>".min($firstcount+$displaypg,$totle)."

  </B> 條記錄,共 $totle 條記錄<BR>";

  //如果只有一頁(yè)則跳出函數(shù):

  if($lastpg<=1) return false;

  $pagenav.=" < a href='$url=1'>首頁(yè)< /a> ";

  if($prepg) $pagenav.=" < a href='

  $url=$prepg'>前頁(yè)< /a> "; else $pagenav.=" 前頁(yè) ";

  if($nextpg) $pagenav.="

  < a href='$url=$nextpg'>后頁(yè)< /a> "; else $pagenav.=" 后頁(yè) ";

  $pagenav.=" < a href='$url=$lastpg'>尾頁(yè)< /a> ";

  //下拉跳轉(zhuǎn)列表,循環(huán)列出所有頁(yè)碼:

  $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< /option>n";

  else $pagenav.="<option value='$i'>

  $i< /option>n";

  }

  $pagenav.="< /select> 頁(yè),共 $lastpg 頁(yè)";

  }

  }

  ?>

  php分頁(yè)類的使用方法(三)

  <?php

  // 方法調(diào)用:

  $pages = new Pages($perpage, $count, $page, 'showpage.php?page'); 創(chuàng)建對(duì)象

  $pages->setShowPageNum($num); 設(shè)置顯示的頁(yè)數(shù)

  $pages->setCurrentIndexPage($num); 設(shè)置當(dāng)前頁(yè)在分頁(yè)欄中的位置

  $pages->setFirstPageText($text); 設(shè)置鏈接第一頁(yè)顯示的文字

  $pages->setLastPageText($text); 設(shè)置鏈接最后一頁(yè)顯示的文字

  $pages->setPrePageText($text); 設(shè)置鏈接上一頁(yè)顯示的文字

  $pages->setNextPageText($text); 設(shè)置鏈接下一頁(yè)顯示的文字

  $pages->setPageCss($css); 設(shè)置各分頁(yè)碼css樣式的class名稱

  $pages->setCurrentPageCss($css); 設(shè)置當(dāng)前頁(yè)碼css樣式的class名稱

  $pages->setPageStyle($style); 設(shè)置各分頁(yè)碼的樣式,即style屬性

  $pages->setCurrentPageStyle($style); 設(shè)置當(dāng)前頁(yè)碼的樣式,即style屬性

  $pages->setLinkSymbol('='); 設(shè)置地址鏈接中頁(yè)碼與變量的連接符,如page=2中的“=”

  $pages->isShowFirstAndLast(true); 設(shè)置是否顯示第一頁(yè)與最后一頁(yè)的鏈接

  $pages->isShowForSimplePage(true); 設(shè)置當(dāng)只有一頁(yè)時(shí)是否顯示分頁(yè)

  $pageCount = $pages->getTotalPageNum(); 獲取總頁(yè)數(shù)

  ?>

  <?php

  //分頁(yè)類

  class Pages{

  private $eachDisNums; //每頁(yè)顯示的條目數(shù)

  private $nums; //總條目數(shù)

  private $currentPage; //當(dāng)前被選中的頁(yè)

  private $showPageNum = 5; //每次顯示的頁(yè)數(shù)

  private $curIndexPage = 3; //當(dāng)前頁(yè)在分頁(yè)中的位置

  private $totalPageNum; //總頁(yè)數(shù)

  private $arrPage = array(); //用來(lái)構(gòu)造分頁(yè)的數(shù)組

  private $subPageLink; //每個(gè)分頁(yè)的鏈接

  private $firstPageText = '1..'; //第一頁(yè)顯示的文字

  private $lastPageText; //最后一頁(yè)顯示的文字

  private $prePageText = '<'; //上一頁(yè)顯示的文字

  private $nextPageText = '>'; //下一頁(yè)顯示的文字

  private $pageCss = ''; //一般頁(yè)的樣式名稱

  private $curPageCss = ''; //當(dāng)前頁(yè)的樣式名稱

  private $pageStyle = ''; //一般頁(yè)的樣式

  private $curPageStyle = ''; //當(dāng)前頁(yè)的樣式

  private $linkSymbol = '='; //url鏈接地址中page與頁(yè)數(shù)之間的符號(hào)

  private $isShowFirstLast = true; //是否顯示第一頁(yè)和最后一頁(yè)

  private $isShowForSimplePage = false; //當(dāng)沒(méi)有分頁(yè)時(shí)(即總條目數(shù)不大于每頁(yè)顯示的條目數(shù))是否顯示分頁(yè)欄

  /**

  * 設(shè)置顯示的頁(yè)數(shù)

  *

  * @param integer $num 顯示的頁(yè)數(shù)

  * @return void

  */

  public function setShowPageNum($num){

  $this->showPageNum = $num;

  }

  /**

  * 設(shè)置當(dāng)前頁(yè)在分頁(yè)欄中的位置

  *

  * @param integer $num 當(dāng)前頁(yè)在分頁(yè)欄中的位置

  * @return void

  */

  public function setCurrentIndexPage($num){

  $this->curIndexPage = $num;

  }

  /**

  * 設(shè)置鏈接第一頁(yè)顯示的文字

  *

  * @param string $text 要顯示的文字

  * @return void

  */

  public function setFirstPageText($text){

  $this->firstPageText = $text;

  }

  /**

  * 設(shè)置鏈接最后一頁(yè)顯示的文字

  *

  * @param string $text 要顯示的文字

  * @return void

  */

  public function setLastPageText($text){

  $this->lastPageText = $text;

  }

  /**

  * 設(shè)置鏈接上一頁(yè)顯示的文字

  *

  * @param string $text 要顯示的文字

  * @return void

  */

  public function setPrePageText($text){

  $this->prePageText = $text;

  }

  /**

  * 設(shè)置鏈接下一頁(yè)顯示的文字

  *

  * @param string $text 要顯示的文字

  * @return void

  */

  public function setNextPageText($text){

  $this->nextPageText = $text;

  }

  /**

  * 設(shè)置各分頁(yè)碼css樣式的class名稱

  *

  * @param string $css css樣式名稱

  * @return void

  */

  public function setPageCss($css){

  $this->pageCss = $css;

  }

  /**

  * 設(shè)置當(dāng)前頁(yè)碼css樣式的class名稱

  *

  * @param string $css css樣式名稱

  * @return void

  */

  public function setCurrentPageCss($css){

  $this->curPageCss = $css;

  }

  /**

  * 設(shè)置各分頁(yè)碼的樣式,即style屬性

  *

  * @param string $style style樣式

  * @return void

  */

  public function setPageStyle($style){

  $this->pageStyle = $style;

  }

  /**

  * 設(shè)置當(dāng)前頁(yè)碼的樣式,即style屬性

  *

  * @param string $style style樣式

  * @return void

  */

  public function setCurrentPageStyle($style){

  $this->curPageStyle = $style;

  }

  /**

  * 設(shè)置地址鏈接中頁(yè)碼與變量的連接符,如page=2中的“=”

  *

  * @param string $symbol 連接符號(hào)

  * @return void

  */

  public function setLinkSymbol($symbol){

  $this->linkSymbol = $symbol;

  }

  /**

  * 獲取總頁(yè)數(shù)

  *

  * @access private

  * @return integer

  */

  public function getTotalPageNum(){

  return $this->totalPageNum;

  }

  /**

  * 設(shè)置是否顯示第一頁(yè)與最后一頁(yè)的鏈接

  *

  * @param boolean $is true:顯示,false:不顯示

  * @return void

  */

  public function isShowFirstAndLast($is){

  $this->isShowFirstLast = $is;

  }

  /**

  * 設(shè)置當(dāng)只有一頁(yè)時(shí)是否顯示分頁(yè)

  *

  * @param boolean $is true:顯示,false:不顯示

  * @return void

  */

  public function isShowForSimplePage($is){

  $this->isShowForSimplePage = $is;

  }

  /**

  * 構(gòu)造方法

  *

  * @param integer $eachDisNums 每頁(yè)顯示的條目數(shù)

  * @param integer $nums 總條目數(shù)

  * @param integer $current_num 當(dāng)前被選中的頁(yè)

  * @param integer $showPageNum 每次顯示的頁(yè)數(shù)

  * @param integer $subPageLink 每個(gè)分頁(yè)的鏈接

  * @param integer $subPage_type 顯示分頁(yè)的類型

  * @return void

  */

  public function __construct($eachDisNums, $nums, $currentPage, $subPageLink){

  $this->eachDisNums=intval($eachDisNums);

  $nums = $nums==0 ? 1: $nums;

  $this->nums = intval($nums);

  $this->totalPageNum = ceil($nums/$eachDisNums);

  $this->currentPage =intval($currentPage);

  $this->currentPage = $this->currentPage<=0 ? 1: $this->currentPage;

  $this->currentPage = $this->currentPage > $this->totalPageNum ? 1 : $this->currentPage;

  $this->subPageLink = $subPageLink;

  $this->lastPageText = '..'.$this->totalPageNum;

  }

  public function __destruct(){

  unset($this->eachDisNums);

  unset($this->nums);

  unset($this->currentPage);

  unset($this->showPageNum);

  unset($this->curIndexPage);

  unset($this->totalPageNum);

  unset($this->arrPage);

  unset($this->subPageLink);

  unset($this->firstPageText);

  unset($this->lastPageText);

  unset($this->prePageText);

  unset($this->nextPageText);

  unset($this->pageCss);

  unset($this->curPageCss);

  unset($this->pageStyle);

  unset($this->curPageStyle);

  unset($this->linkSymbol);

  unset($this->isShowFirstLast);

  unset($this->isShowForSimplePage);

  }

  /**

  * 生成分頁(yè)

  *

  * @return string

  */

  public function generatePages(){

  $subPageCss2Str = '';

  $isShow = false;

  if($this->totalPageNum == 1){ //只有一頁(yè)時(shí)

  if($this->isShowForSimplePage){

  $isShow = true;

  }

  }else{

  $isShow = true;

  }

  if($isShow){

  if($this->currentPage > 1){

  $prewPageUrl = $this->subPageLink.$this->linkSymbol.($this->currentPage-1);

  if($this->isShowFirstLast){

  $firstPageUrl = $this->subPageLink.$this->linkSymbol."1";

  $subPageCss2Str .= '<a href="'.$firstPageUrl.'" class="'.$this->pageCss.'" style="'.$this->pageStyle.'">'.$this->firstPageText.'</a>';

  }

  $subPageCss2Str .= '<a href="'.$prewPageUrl.'" class="'.$this->pageCss.'"style="'.$this->pageStyle.'">'.$this->prePageText.'</a>';

  }

  $a=$this->construct_num_Page();

  for($i=0;$i<count($a);$i++){

  $s=$a[$i];

  if($s == $this->currentPage ){

  $subPageCss2Str .= '<a href="#" class="'.$this->curPageCss.'" style="'.$this->curPageStyle.'">'.$s.'</a>';

  }else{

  $url = $this->subPageLink.$this->linkSymbol.$s;

  $subPageCss2Str .= '<a href="'.$url.'" class="'.$this->pageCss.'" style="'.$this->pageStyle.'">'.$s.'</a>';

  }

  }

  if($this->currentPage < $this->totalPageNum){

  $nextPageUrl = $this->subPageLink.$this->linkSymbol.($this->currentPage+1);

  $subPageCss2Str .= '<a href="'.$nextPageUrl.'" class="'.$this->pageCss.'" style="'.$this->pageStyle.'">'.$this->nextPageText.'</a>';

  if($this->isShowFirstLast){

  $lastPageUrl = $this->subPageLink.$this->linkSymbol.$this->totalPageNum;

  $subPageCss2Str .= '<a href="'.$lastPageUrl.'" class="'.$this->pageCss.'"style="'.$this->pageStyle.'">'.$this->lastPageText.'</a> ';

  }

  }

  }

  return $subPageCss2Str;

  }//End of generatePages() Method

  /**

  * 用來(lái)給建立分頁(yè)的數(shù)組初始化的函數(shù)。

  *

  * @return array

  */

  private function initArray(){

  for($i=0; $i < $this->showPageNum; $i ++){

  $this->arrPage[$i] = $i;

  }

  return $this->arrPage;

  }//End of initArray() Method

  /**

  * 用來(lái)構(gòu)造顯示的條目

  * 即:[1][2][3][4][5][6][7][8][9][10]

  *

  * @return array

  */

  private function construct_num_Page(){

  if($this->totalPageNum < $this->showPageNum){

  $currentArray = array();

  for($i=0; $i < $this->totalPageNum; $i ++){

  $currentArray[$i] = $i + 1;

  }

  }else{

  $currentArray = $this->initArray();

  $curArrayLen = count($currentArray);

  if($this->currentPage <= $this->curIndexPage){

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

  $currentArray[$i] = $i+1;

  }

  }elseif (($this->currentPage <= $this->totalPageNum) && ($this->currentPage > ($this->totalPageNum - $this->showPageNum + 1))){

  //構(gòu)造最后的分頁(yè)欄,35 36 37 38 39 40 [下一頁(yè)] [最后一頁(yè)] 總頁(yè)數(shù)為40

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

  $currentArray[$i] = $this->totalPageNum - $this->showPageNum + 1 + $i;

  }

  }else{

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

  $currentArray[$i] = $this->currentPage - $this->curIndexPage + 1 +$i;

  }

  }

  }

  return $currentArray;

  }//End of construct_num_Page() Method

  }//End of Pages Class

  ?>


猜你喜歡:

1.php分頁(yè)類的使用方法

2.php調(diào)用類中的方法

3.php調(diào)用父類方法

4.php中的“->”用法

374291