php萬能分頁類(php實現分頁功能)

本文目錄一覽:

php 分頁類怎麼用啊?

?php

    class Page {

        private $total_rows;//數據庫總條數

        private $per_page_rows;//每頁顯示條數

        private $limit;

        private $uri;

        private $total_pages;//總頁數

        private $config=array(“header”=”記錄條數”,”prev”=”上一頁”,”next”=”下一頁”,”first”=”首 頁”,”last”=”尾 頁”);

        private $list_length=8;

        public function __construct($total_rows,$per_page_rows=10,$url_args){

            $this-total_rows=$total_rows;

            $this-per_page_rows=$per_page_rows;

            $this-uri=$this-get_uri($url_args);

            $this-page = !empty($_GET[‘page’]) ? $_GET[‘page’] : 1;

            $this-total_pages=ceil($this-total_rows/$this-per_page_rows);

            $this-limit=$this-set_limit();

        }

        private function set_limit() {

            return “limit “.($this-page-1)*$this-per_page_rows.”,{$this-per_page_rows}”;

        }

        private function get_uri($url_args) {

            $url=$_SERVER[“REQUEST_URI”].(strpos($_SERVER[“REQUEST_URI”],”?”) ? “” : “?”).$url_args;

            $parse=parse_url($url);

            if (isset($parse[‘query’])) {

                parse_str($parse[‘query’],$params);//把url字符串解析為數組

                unset($params[‘page’]);//刪除數組下標為page的值

                $url=$parse[‘path’].’?’.http_build_query($params);//再次構建url

            }

                return $url;

        }

        public function __get($args) {

            if ($args==”limit”) {

                return $this-limit;

            }else{

                return null;

            }

        }

        private function start_page(){

            if ($this-total_rows==0) {

                return 0;

            }else{

                return (($this-page-1)*$this-per_page_rows)+1;

            }

        }

        private function end_page(){

            return min($this-page*$this-per_page_rows,$this-total_rows);

        }

        private function go_first() {

            $html=””;

            if ($this-page==1) {

                $html.=”nbsp;{$this-config[‘first’]}nbsp;”;

            }else{

                $html.=”nbsp;a href='{$this-uri}page=1′{$this-config[‘first’]}/anbsp;”;

            }

            return $html;

        }

        private function go_prev() {

            $html=””;

            if ($this-page==1) {

                $html.=”nbsp;{$this-config[‘prev’]}nbsp;”;

            }else{

                $html.=”nbsp;a href='{$this-uri}page={$this-page}-1′{$this-config[‘prev’]}/anbsp;”;

            }

            return $html;

        }

        private function go_next() {

            $html=””;

            if ($this-page==$this-total_pages) {

                $html.=”nbsp;{$this-config[‘next’]}nbsp;”;

            }else{

                $html.=”nbsp;a href='{$this-uri}page={$this-page}+1′{$this-config[‘next’]}/anbsp;”;

            }

            return $html;

        }

        private function go_last() {

            $html=””;

            if ($this-page==$this-total_pages) {

                $html.=”nbsp;{$this-config[‘last’]}nbsp;”;

            }else{

                $html.=”nbsp;a href='{$this-uri}page={$this-total_pages}'{$this-config[‘last’]}/anbsp;”;

            }

            return $html;

        }

        private function go_page() {

            return ‘nbsp;input type=”text” onkeydown=”javascript:if(event.keyCode==13){var page=(this.value’.$this-total_pages.’)?’.$this-total_pages.’:this.value;location=\”.$this-uri.’page=\’+page+\’\’}” value=”‘.$this-page.'” style=”width:25px;” /input type=”button” onclick=”javascript:var page=(this.previousSibling.value’.$this-total_pages.’)?’.$this-total_pages.’:this.previousSibling.value;location=\”.$this-uri.’page=\’+page+\’\'” value=”GO” /nbsp;’;

        }

        private function page_list() {

            $link_page=””;

            $i_num=floor($this-list_length/2);

            for ($i = $i_num; $i = 1; $i–) {

                $page=$this-page-$i;

                if ($page1) {

                    continue;

                }else{

                    $link_page.=”nbsp;a href='{$this-uri}page={$page}'{$page}/anbsp;”;

                }

            }

            $link_page.=”nbsp;{$this-page}nbsp;”;

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

                $page=$this-page+$i;

                if ($page=$this-total_pages) {

                    $link_page.=”nbsp;a href='{$this-uri}page={$page}'{$page}/anbsp;”;

                }else{

                    break;

                }

            }

            return $link_page;

        }

        public function out_page($display=array(0,1,2,3,4,5,6,7,8)) {

            $display_html=”;

            $html[0]=”nbsp;共有b{$this-total_rows}/b{$this-config[‘header’]}nbsp;”;

            $html[1]=”nbsp;每頁顯示b”.($this-end_page()-$this-start_page()+1).”/b條,本頁顯示從b{$this-start_page()}/b–b{$this-end_page()}/b{$this-config[‘header’]}nbsp;”;

            $html[2]=”nbsp;b{$this-page}/b/b{$this-total_pages}/b頁nbsp;”;

            $html[3]=$this-go_first();

            $html[4]=$this-go_prev();

            $html[5]=$this-page_list();

            $html[6]=$this-go_next();

            $html[7]=$this-go_last();

            $html[8]=$this-go_page();

            foreach ($display as $index){

                $display_html.=$html[$index];

            }

            return $display_html;

        }

    }

?

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各種分頁方法,各位大仙有的別藏了~~

PHP分頁方法:

第一步創建一個類 subPages.php?php

class SubPages{

private $each_disNums;//每頁顯示的條目數

private $nums;//總條目數

private $current_page;//當前被選中的頁

private $sub_pages;//每次顯示的頁數

private $pageNums;//總頁數

private $page_array = array();//用來構造分頁的數組

private $subPage_link;//每個分頁的鏈接

private $subPage_type;//顯示分頁的類型

//__construct是SubPages的構造函數,用來在創建類的時候自動運行. //@$each_disNums 每頁顯示的條目數 // @nums 總條目數 // @current_num 當前被選中的頁 //@sub_pages 每次顯示的頁數 // @subPage_link 每個分頁的鏈接 //@subPage_type 顯示分頁的類型 //當@subPage_type=1的時候為普通分頁模式 example: 共4523條記錄,每頁顯示10條,當前第1/453頁 [首頁] [上頁] [下頁] [尾頁] //當@subPage_type=2的時候為經典分頁樣式 example: 當前第1/453頁 [首頁] [上頁] 1 2 3 4 5 6 7 8 9 10 [下頁] [尾頁]

function __construct($each_disNums,$nums,$current_page,$sub_pages,$subPage_link,$subPage_type){

//intval通過使用特定的進制轉換(默認是十進制),返回變量 var 的 integer 數值

$this-each_disNums=intval($each_disNums);

$this-nums=intval($nums);

if(!$current_page){

$this-current_page=1;

}else{

$this-current_page=intval($current_page);

}

$this-sub_pages=intval($sub_pages);

$this-pageNums=ceil($nums/$each_disNums);

$this-subPage_link=$subPage_link;

$this-show_SubPages($subPage_type);

//echo $this-pageNums.”–“.$this-sub_pages;

}

//__destruct析構函數,當類不在使用的時候調用,該函數用來釋放資源

function __destruct(){

unset($each_disNums);

unset($nums);

unset($current_page);

unset($sub_pages);

unset($pageNums);

unset($page_array);

unset($subPage_link);

unset($subPage_type);

}

//show_SubPages函數用在構造函數裡面。而且用來判斷顯示什麼樣子的分頁

function show_SubPages($subPage_type){

if($subPage_type == 1){

$this-subPageCss1();

}elseif ($subPage_type == 2){

$this-subPageCss2();

}

}

//用來給建立分頁的數組初始化的函數。

function initArray(){

for($i=0;$i$this-sub_pages;$i++){

$this-page_array[$i]=$i;

}

return $this-page_array;

}

//construct_num_Page該函數使用來構造顯示的條目

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

function construct_num_Page(){

if($this-pageNums $this-sub_pages){

$current_array=array();

for($i=0;$i$this-pageNums;$i++){

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

}

}else{

$current_array=$this-initArray();

if($this-current_page = 3){

for($i=0;$icount($current_array);$i++){

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

}

}elseif ($this-current_page = $this-pageNums $this-current_page $this-pageNums – $this-sub_pages +1 ){

for($i=0;$icount($current_array);$i++){

$current_array[$i]=($this-pageNums)-($this-sub_pages)+1+$i;

}

}else{

for($i=0;$icount($current_array);$i++){

$current_array[$i]=$this-current_page-2+$i;

}

}

}

return $current_array;

}

//構造普通模式的分頁

//共4523條記錄,每頁顯示10條,當前第1/453頁 [首頁] [上頁] [下頁] [尾頁]

function subPageCss1(){

$subPageCss1Str=””;

$subPageCss1Str.=”共”.$this-nums.”條記錄,”;

$subPageCss1Str.=”每頁顯示”.$this-each_disNums.”條,”;

$subPageCss1Str.=”當前第”.$this-current_page.”/”.$this-pageNums.”頁 “;

if($this-current_page 1){

$firstPageUrl=$this-subPage_link.”1″;

$prewPageUrl=$this-subPage_link.($this-current_page-1);

$subPageCss1Str.=”[a href=’$firstPageUrl’首頁/a] “;

$subPageCss1Str.=”[a href=’$prewPageUrl’上一頁/a] “;

}else {

$subPageCss1Str.=”[首頁] “;

$subPageCss1Str.=”[上一頁] “;

}

if($this-current_page $this-pageNums){

$lastPageUrl=$this-subPage_link.$this-pageNums;

$nextPageUrl=$this-subPage_link.($this-current_page+1);

$subPageCss1Str.=” [a href=’$nextPageUrl’下一頁/a] “;

$subPageCss1Str.=”[a href=’$lastPageUrl’尾頁/a] “;

}else {

$subPageCss1Str.=”[下一頁] “;

$subPageCss1Str.=”[尾頁] “;

}

echo $subPageCss1Str;

}

//構造經典模式的分頁

//當前第1/453頁 [首頁] [上頁] 1 2 3 4 5 6 7 8 9 10 [下頁] [尾頁]

function subPageCss2(){

$subPageCss2Str=””;

$subPageCss2Str.=”當前第”.$this-current_page.”/”.$this-pageNums.”頁 “;

if($this-current_page 1){

$firstPageUrl=$this-subPage_link.”1″;

$prewPageUrl=$this-subPage_link.($this-current_page-1);

$subPageCss2Str.=”[a href=’$firstPageUrl’首頁/a] “;

$subPageCss2Str.=”[a href=’$prewPageUrl’上一頁/a] “;

}else {

$subPageCss2Str.=”[首頁] “;

$subPageCss2Str.=”[上一頁] “;

}

$a=$this-construct_num_Page();

for($i=0;$icount($a);$i++){

$s=$a[$i];

if($s == $this-current_page ){

$subPageCss2Str.=”[span style=’color:red;font-weight:bold;'”.$s.”/span]”;

}else{

$url=$this-subPage_link.$s;

$subPageCss2Str.=”[a href=’$url'”.$s.”/a]”;

}

}

if($this-current_page $this-pageNums){

$lastPageUrl=$this-subPage_link.$this-pageNums;

$nextPageUrl=$this-subPage_link.($this-current_page+1);

$subPageCss2Str.=” [a href=’$nextPageUrl’下一頁/a] “;

$subPageCss2Str.=”[a href=’$lastPageUrl’尾頁/a] “;

}else {

$subPageCss2Str.=”[下一頁] “;

$subPageCss2Str.=”[尾頁] “;

}

echo $subPageCss2Str;

}

}

?要做分頁的頁面?php//每頁顯示的條數

$page_size=2;

//得到當前是第幾頁

$pageCurrent=$_GET[“p”];

$offet =($pageCurrent-1)*$page_size;

//建立數據庫連接

$conn = mysql_connect(“地址”,”用戶名”,”密碼”) or die(“”.mysql_error());

//設置字符集

mysql_query(“set names gbk”);

//設置數據庫

mysql_select_db(“數據庫名”,$conn) or die(“”.mysql_error());

if($conn) { include (“query.html”);

//查詢會員信息//注:這裡的sql查詢了兩遍.第一遍是確定查詢出來的總數據條數

$query_sql = “SELECT * FROM user_info_t order by id desc”;//第二遍是根據需要即$page_size來確定每次查出的條數

$query_sql_sec= “SELECT * FROM user_info_t order by id desc limit $offet,$page_size”;

//執行查詢語句 返回一個結果集

$query_res = mysql_query($query_sql,$conn);

$query_res_sec = mysql_query($query_sql_sec,$conn);

//查詢列數

//$query_cols = mysql_num_fields($query_res);

//查詢行數

$query_num =mysql_num_rows($query_res);

//返回根據從結果集取得的行生成的數組,如果沒有更多行

echo “table border=’0′ cellpadding=’1′ cellspacing=’2′ width=’100%’ bgcolor=’#FFFFFF'”;

while($query_row = mysql_fetch_array($query_res_sec)) {

echo “tr”;

for ($i=0;$i$query_cols;$i++) {

echo “td bordercolor=’#A2BEE1′ bgcolor=’#A2BEE1′ width=’8%'”.$query_row[$i].”/td\n”;

}

echo “td bordercolor=’#A2BEE1′ bgcolor=’#A2BEE1′ width=’8%'”;

//echo “input type=’button’ class=’button’ id=’modify_record’ name=’modify_record’ value=’修改’ /”;

echo”button onClick=\”submit(location.href=’../modify/modify.php?rec_id=$query_row[0]’);\”class=\”button\”;修改/button”;

//echo “ahref=’../delete/delete.php?rec_id=$query_row[0]’onClick=\”if(confirm(‘確實要刪除此條記錄嗎?’)) return true;else returnfalse;\”img src=\”../image/delete.gif\” align=\”absmiddle\”/刪除/a”;

echo “buttononClick=\”if(confirm(‘確實要刪除此條記錄嗎?’)) return submit(location.href=’../delete/delete.php?rec_id=$query_row[0]’);else return false;\”class=\”button\”;刪除/button”;

echo “/td”;

echo “/tr”;

}

//echo “/form”;

echo “/table”;

require_once(“../common/subPages.php”);//總條目數為數據庫中查詢出的數據條數

$nums=$query_num;

//每次顯示的頁數

$sub_pages=10; //if(!$pageCurrent) $pageCurrent=1;

//調用類SubPages 傳的參數為:每頁顯示條數/當前第幾頁/每次顯示的頁數/分頁模式

$subPage=new SubPages($page_size,$nums,$pageCurrent,$sub_pages,”query.php?p=”,1);

}else{

die(‘數據庫連接異常: ‘.mysql_error());

}

//斷開數據庫連接

if ($conn)

{

mysql_close($conn);

}

?

PHP+mysql分頁的問題,我用了php萬能分頁的代碼,

剛才下載了類包看了看, 1、$page 變量名已經被使用,且聲明為全局變量所以你不用再次定義$page,也就是說,使用幫助有錯誤,且limit 條件不應該是$page ,而應該是 $start = ($page-1)*$pageSize;//(當前頁碼-1)* 每頁的顯示條目 $strsql = ” lPHP+mysql分頁的問題,我用了php萬能分頁的代碼,

php分頁功能怎麼實現

php本身是沒有分頁概念的,分頁是URL傳參,然後通過mysql查詢語句到數據庫獲取數據,然後實現的分頁,url上的參數,通過PHP的$_GET都是可以獲取到的。

現在市面上的PHP框架基本都有PHP分頁類,參照文檔直接調用就好了,如果想看實現過程,可以去下載一個TP框架,然後打開裡面的分頁類查看裡面的源代碼。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/247715.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-12 13:22
下一篇 2024-12-12 13:22

相關推薦

  • PHP和Python哪個好找工作?

    PHP和Python都是非常流行的編程語言,它們被廣泛應用於不同領域的開發中。但是,在考慮擇業方向的時候,很多人都會有一個問題:PHP和Python哪個好找工作?這篇文章將從多個方…

    編程 2025-04-29
  • jQuery Datatable分頁中文

    jQuery Datatable是一個非常流行的數據表插件,它可以幫助您快速地在頁面上創建搜索、過濾、排序和分頁的數據表格。不過,它的默認設置是英文的,今天我們就來探討如何將jQu…

    編程 2025-04-29
  • PHP怎麼接幣

    想要在自己的網站或應用中接受比特幣等加密貨幣的支付,就需要對該加密貨幣擁有一定的了解,並使用對應的API進行開發。本文將從多個方面詳細闡述如何使用PHP接受加密貨幣的支付。 一、環…

    編程 2025-04-29
  • Java和Python哪個功能更好

    對於Java和Python這兩種編程語言,究竟哪一種更好?這個問題並沒有一個簡單的答案。下面我將從多個方面來對Java和Python進行比較,幫助讀者了解它們的優勢和劣勢,以便選擇…

    編程 2025-04-29
  • Python每次運行變量加一:實現計數器功能

    Python編程語言中,每次執行程序都需要定義變量,而在實際開發中常常需要對變量進行計數或者累加操作,這時就需要了解如何在Python中實現計數器功能。本文將從以下幾個方面詳細講解…

    編程 2025-04-28
  • 使用PHP foreach遍歷有相同屬性的值

    本篇文章將介紹如何使用PHP foreach遍歷具有相同屬性的值,並給出相應的代碼示例。 一、基礎概念 在講解如何使用PHP foreach遍歷有相同屬性的值之前,我們需要先了解幾…

    編程 2025-04-28
  • Python strip()函數的功能和用法用法介紹

    Python的strip()函數用於刪除字符串開頭和結尾的空格,包括\n、\t等字符。本篇文章將從用法、功能以及與其他函數的比較等多個方面對strip()函數進行詳細講解。 一、基…

    編程 2025-04-28
  • PHP獲取301跳轉後的地址

    本文將為大家介紹如何使用PHP獲取301跳轉後的地址。301重定向是什麼呢?當我們訪問一個網頁A,但是它已經被遷移到了另一個地址B,此時若服務器端做了301重定向,那麼你的瀏覽器在…

    編程 2025-04-27
  • 全能的wpitl實現各種功能的代碼示例

    wpitl是一款強大、靈活、易於使用的編程工具,可以實現各種功能。下面將從多個方面對wpitl進行詳細的闡述,每個方面都會列舉2~3個代碼示例。 一、文件操作 1、讀取文件 fil…

    編程 2025-04-27
  • PHP登錄頁面代碼實現

    本文將從多個方面詳細闡述如何使用PHP編寫一個簡單的登錄頁面。 1. PHP登錄頁面基本架構 在PHP登錄頁面中,需要包含HTML表單,用戶在表單中輸入賬號密碼等信息,提交表單後服…

    編程 2025-04-27

發表回復

登錄後才能評論