本文目錄一覽:
- 1、PHP分頁問題. 望大蝦開示
- 2、求PHP各種分頁方法,各位大仙有的別藏了~~
- 3、如何將php裡面的數組內容進行分頁顯示出來?
- 4、PHP分頁問題!
- 5、請問哪位大俠能給我解釋下PHP分頁的原理么,麻煩附上代碼加註釋,我大部分能看懂,但是有些模糊,謝謝
- 6、php分頁功能怎麼實現
PHP分頁問題. 望大蝦開示
1.$_GET[page] 是你點擊 上一頁 或者 下一頁 傳遞過來的, 當你的頁面初始化的時候 也就是你沒還沒點擊上一頁 下一頁 的時候 他應該是0
2.$page.=’,’; 這個的意思是 $page = $page . ‘,’; 他是用來拼寫SQL 語句的
拼寫後 你的SQL 應該是 select * from message limit 0,5; 注意看 0 和之間 有個 逗號 代表 從結果集的第一行數據 往下取5 行
3.分頁其實非常簡單 比如說你有26記錄 每5條為一頁 26條記錄能分幾頁啊 ? 當然是 6頁了…
可是計算機不知道 你就給他一個算法
記住公式 (總的記錄條數 + 每頁的記錄數 – 1) / 每頁的記錄數
咱們用公式算一下 (26 + 5 -1) / 5 = 6
然後我們看下SQL $sql=”select * from message limit $page $pagesize “;
第1頁的時候 是 limit 0,5
第2頁的時候 是 limit 5,5
第2頁的時候 是 limit 10,5
剛才也說了 limit 是從第幾行數據 往下 走 幾行 因為咱們是 5條數據一分也所以 第2個參數永遠都不用變就是5 ,第一個參數 非常好算 每頁的記錄數 * (當前頁數 – 1)
第1頁的時候 是 5*(1-1)=0
第2頁的時候 是 5*(2-1)=5
第1頁的時候 是 5*(3-1)=10
還有說的就是你的代碼 問題很嚴重 . php 5.3 版本 你這程序根本就運行不了….
$_GET[‘page’] 這個樣寫才標準. 不要以為PHP 單引號 和 雙引號 沒有任何差別 單引號的速度要比 雙引號 快3倍. $_GET[page] 這種寫法 5.3 以後直接就報錯了. 建議你馬上升級為5.3 或更高的版本 養成一個練好的編寫代碼習慣.
求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裡面的數組內容進行分頁顯示出來?
1、前言
分頁顯示是一種非常常見的瀏覽和顯示大量數據的方法,屬於web編程中最常處理的事件之一。對於web編程的老手來說,編寫這種代碼實在是和呼吸一樣自然,但是對於初學者來說,常常對這個問題摸不着頭緒,因此特地撰寫此文對這個問題進行詳細的講解,力求讓看完這篇文章的朋友在看完以後對於分頁顯示的原理和實現方法有所了解。本文適合初學者閱讀,所有示例代碼均使用php編寫。
2、原理
所謂分頁顯示,也就是將數據庫中的結果集人為的分成一段一段的來顯示,這裡需要兩個初始的參數:
每頁多少條記錄($PageSize)?
當前是第幾頁($CurrentPageID)?
現在只要再給我一個結果集,我就可以顯示某段特定的結果出來。
至於其他的參數,比如:上一頁($PreviousPageID)、下一頁($NextPageID)、總頁數($numPages)等等,都可以根據前邊這幾個東西得到。
以mysql數據庫為例,如果要從表內截取某段內容,sql語句可以用:select * from table limit offset, rows。看看下面一組sql語句,嘗試一下發現其中的規率。
前10條記錄:select * from table limit 0,10
第11至20條記錄:select * from table limit 10,10
第21至30條記錄:select * from table limit 20,10
……
這一組sql語句其實就是當$PageSize=10的時候取表內每一頁數據的sql語句,我們可以總結出這樣一個模板:
select * from table limit ($CurrentPageID – 1) * $PageSize, $PageSize
拿這個模板代入對應的值和上邊那一組sql語句對照一下看看是不是那麼回事。搞定了最重要的如何獲取數據的問題以後,剩下的就僅僅是傳遞參數,構造合適的sql語句然後使用php從數據庫內獲取數據並顯示了。以下我將用具體代碼加以說明。
3、簡單代碼
請詳細閱讀以下代碼,自己調試運行一次,最好把它修改一次,加上自己的功能,比如搜索等等。
?php
// 建立數據庫連接
$link = mysql_connect(“localhost”, “mysql_user”, “mysql_password”)
or die(“Could not connect: ” . mysql_error());
// 獲取當前頁數
if( isset($_GET[‘page’]) ){
$page = intval( $_GET[‘page’] );
}
else{
$page = 1;
}
// 每頁數量
$PageSize = 10;
// 獲取總數據量
$sql = “select count(*) as amount from table”;
$result = mysql_query($sql);
$row = mysql_fetch_row($result);
$amount = $row[‘amount’];
// 記算總共有多少頁
if( $amount ){
if( $amount $page_size ) //如果總數據量小於$PageSize,那麼只有一頁
if( $amount % $page_size ){ //取總數據量除以每頁數的餘數
$page_count = (int)($amount / $page_size) + 1; //如果有餘數,則頁數等於總數據量除以每頁數的結果取整再加一
}else{
$page_count = $amount / $page_size; //如果沒有餘數,則頁數等於總數據量除以每頁數的結果
}
}
else{
$page_count = 0;
}
// 翻頁鏈接
$page_string = ”;
if( $page == 1 ){
$page_string .= ‘第一頁|上一頁|’;
}
else{
$page_string .= ‘a href=”/?page=1″;第一頁/a|a href=”/?page=’.”($page-1).’上一頁/a|’;
}
if( ($page == $page_count) || ($page_count == 0) ){
$page_string .= ‘下一頁|尾頁’;
}
else{
$page_string .= ‘a href=”/?page=’.”($page+1).’下一頁/a|a href=”/?page=’.”$page_count.’尾頁/a’;
}
// 獲取數據,以二維數組格式返回結果
if( $amount ){
$sql = “select * from table order by id desc limit “. ($page-1)*$page_size .”, $page_size”;
$result = mysql_query($sql);
while ( $row = mysql_fetch_row($result) ){
$rowset[] = $row;
}
}else{
$rowset = array();
}
// 沒有包含顯示結果的代碼,那不在討論範圍,只要用foreach就可以很簡單的用得到的二維數組來顯示結果
?
4、OO風格代碼
以下代碼中的數據庫連接是使用的pear db類進行處理
?php
// FileName: Pager.class.php
// 分頁類,這個類僅僅用於處理數據結構,不負責處理顯示的工作
Class Pager
{
var $PageSize; //每頁的數量
var $CurrentPageID; //當前的頁數
var $NextPageID; //下一頁
var $PreviousPageID; //上一頁
var $numPages; //總頁數
var $numItems; //總記錄數
var $isFirstPage; //是否第一頁
var $isLastPage; //是否最後一頁
var $sql; //sql查詢語句
function Pager($option)
{
global $db;
$this-_setOptions($option);
// 總條數
if ( !isset($this-numItems) )
{
$res = $db-query($this-sql);
$this-numItems = $res-numRows();
}
// 總頁數
if ( $this-numItems 0 )
{
if ( $this-numItems $this-PageSize )
if ( $this-numItems % $this-PageSize )
{
$this-numPages= (int)($this-numItems / $this-PageSize) + 1;
}
else
{
$this-numPages = $this-numItems / $this-PageSize;
}
}
else
{
$this-numPages = 0;
}
switch ( $this-CurrentPageID )
{
case $this-numPages == 1:
$this-isFirstPage = true;
$this-isLastPage = true;
break;
case 1:
$this-isFirstPage = true;
$this-isLastPage = false;
break;
case $this-numPages:
$this-isFirstPage = false;
$this-isLastPage = true;
break;
default:
$this-isFirstPage = false;
$this-isLastPage = false;
}
if ( $this-numPages 1 )
{
if ( !$this-isLastPage )
if ( !$this-isFirstPage )
}
return true;
}
/***
*
* 返回結果集的數據庫連接
* 在結果集比較大的時候可以直接使用這個方法獲得數據庫連接,然後在類之外遍歷,這樣開銷較小
* 如果結果集不是很大,可以直接使用getPageData的方式獲取二維數組格式的結果
* getPageData方法也是調用本方法來獲取結果的
*
***/
function getDataLink()
{
if ( $this-numItems )
{
global $db;
$PageID = $this-CurrentPageID;
$from = ($PageID – 1)*$this-PageSize;
$count = $this-PageSize;
$link = $db-limitQuery($this-sql, $from, $count); //使用Pear DB::limitQuery方法保證數據庫兼容性
return $link;
}
else
{
return false;
}
}
/***
*
* 以二維數組的格式返回結果集
*
***/
function getPageData()
{
if ( $this-numItems )
{
if ( $res = $this-getDataLink() )
{
if ( $res-numRows() )
{
while ( $row = $res-fetchRow() )
{
$result[] = $row;
}
}
else
{
$result = array();
}
return $result;
}
else
{
return false;
}
}
else
{
return false;
}
}
function _setOptions($option)
{
$allow_options = array(
‘PageSize’,
‘CurrentPageID’,
‘sql’,
‘numItems’
);
foreach ( $option as $key = $value )
{
if ( in_array($key, $allow_options) ($value != null) )
{
$this-$key = $value;
}
}
return true;
}
}
?
?php
// FileName: test_pager.php
// 這是一段簡單的示例代碼,前邊省略了使用pear db類建立數據庫連接的代碼
require “Pager.class.php”;
if ( isset($_GET[‘page’]) )
{
$page = (int)$_GET[‘page’];
}
else
{
$page = 1;
}
$sql = “select * from table order by id”;
$pager_option = array(
“sql” = $sql,
“PageSize” = 10,
“CurrentPageID” = $page
);
if ( isset($_GET[‘numItems’]) )
{
$pager_option[‘numItems’] = (int)$_GET[‘numItems’];
}
$pager = @new Pager($pager_option);
$data = $pager-getPageData();
if ( $pager-isFirstPage )
{
$turnover = “首頁|上一頁|”;
}
else
{
$turnover = “a href=’?page=1numItems=”.$pager-numItems.”‘首頁/a|a href=”/?page=”.$pager-PreviousPageID.”numItems=”.$pager-numItems.”‘上一頁/a|”;
}
if ( $pager-isLastPage )
{
$turnover .= “下一頁|尾頁”;
}
else
{
$turnover .= “a href=”/?page=”.$pager-NextPageID.”numItems=”.$pager-numItems.”‘下一頁/a|a href=”/?page=”.$pager-numPages.”numItems=”.$pager-numItems.”‘尾頁/a”;
}
?
需要說明的地方有兩個:
這個類僅僅處理數據,並不負責處理顯示,因為我覺得將數據的處理和結果的顯示都放到一個類裡邊實在是有些勉強。顯示的時候情況和要求多變,不如自己根據類給出的結果處理,更好的方法是根據這個Pager類繼承一個自己的子類來顯示不同的分頁,比如顯示用戶分頁列表可以:
?php
Class MemberPager extends Pager
{
function showMemberList()
{
global $db;
$data = $this-getPageData();
// 顯示結果的代碼
// ……
}
}
/// 調用
if ( isset($_GET[‘page’]) )
{
$page = (int)$_GET[‘page’];
}
else
{
$page = 1;
}
$sql = “select * from members order by id”;
$pager_option = array(
“sql” = $sql,
“PageSize” = 10,
“CurrentPageID” = $page
);
if ( isset($_GET[‘numItems’]) )
{
$pager_option[‘numItems’] = (int)$_GET[‘numItems’];
}
$pager = @new MemberPager($pager_option);
$pager-showMemberList();
?
第二個需要說明的地方就是不同數據庫的兼容性,在不同的數據庫里截獲一段結果的寫法是不一樣的。
mysql: select * from table limit offset, rows
pgsql: select * from table limit m offset n
……
所以要在類裡邊獲取結果的時候需要使用pear db類的limitQuery方法。
ok,寫完收功,希望花時間看完這些文字的你不覺得是浪費了時間。
回答者
另外,虛機團上產品團購,超級便宜
PHP分頁問題!
分頁沒樓上說的那麼複雜,你仔細看看你的打印分頁的地方,是在/tr與/table之間,你應該放在一個單元格里。這樣他才能顯示。
/*
分頁步驟:
1.給出每頁的記錄條數
2.求出總頁數(先得到總條數,再求總頁數)
3.獲得當前頁的id值
4.得到每個頁面的結果集
5.循環取出
*/
?php
$id=$_GET[“id”];
if($id==””)
{
$id=1;
}
$paginal=10;
$sql=”select * from contents where title=$id”;
$rs=mysql_query($sql);
$sum=mysql_num_rows($rs); //信息的總數
$pagination=($sum-1)/$paginal+1; //信息的總頁數
$pagination=(int)$pagination; //總頁數取整
$pageno=$_GET[“pageno”]; //當前頁數
if($pageno==”” || $pageno1)
{
$pageno=1;
}
if($pageno$pagination)
{
$pageno=$pagination;
}
$startno=($pageno-1)*$paginal; //當前結果集(當前查看第幾條)
$sql=”select * from contents where title=$id order by id desc limit $startno,$paginal”;
$rs=mysql_query($sql);
?
table width=”780″ border=”1″ bordercolor=”#000000″ align=”center”
tr
td編號/td
td內容/td
td作者/td
/tr
?php
while($rows=mysql_fetch_assoc($rs))
{
?
tr
td?php echo $rows[“Id”]?/td
td?php echo $rows[“Contents”]?/td
td?php echo $rows[“Author”]?/td
/tr
?php
}
?
/table
請問哪位大俠能給我解釋下PHP分頁的原理么,麻煩附上代碼加註釋,我大部分能看懂,但是有些模糊,謝謝
?php
/*
$recordcount 總數據量
$pernumber 每頁顯示記錄數
$pagelong 顯示頁碼的長度
*/
function showpage($pagecount,$pagelong=5){
if(!isset($_GET[‘page’])){
$_GET[‘page’]=”;
}
if(!isset($p)){
$p=”;
}
if($_GET[‘page’]1||$_GET[‘page’]==””){
$_GET[‘page’]=1;
}
//總頁數小於等於頁碼長度
if($pagecount=$pagelong){
for($i=1;$i=$pagecount;$i++){
if($i==$_GET[‘page’]){
$p=$p.” span$i/span “;
}
else{
$p =$p.” a href='”.get_url($i).”‘ hidefocus$i/a “;
}
}
}
//總頁數大於頁碼長度
else{
//循環頁碼數
for($i=$_GET[‘page’];$i=$_GET[‘page’]+$pagelong-1;$i++){
//判斷是否在當前頁
if($i==$_GET[‘page’]$_GET[‘page’]!=1){
//輸出 當前頁前面的
for($i=$_GET[‘page’]-5;$i$_GET[‘page’];$i++){
if($i=1){
$p=$p.” a href='”.get_url($i).”‘ hidefocus$i/a “;
}
}
$p=$p.” span$i/span “;
}
else{
if($i==$_GET[‘page’]){
$p =$p.” span$i/span “;
}
else{
$p =$p.” a href='”.get_url($i).”‘ hidefocus$i/a “;
}
}
//總頁數-當前頁碼 小於 頁碼長度
if(($pagecount-$_GET[‘page’])=$pagelong){
for($i=$_GET[‘page’]+1;$i=$pagecount;$i++){
$p=$p.” a href='”.get_url($i).”‘ hidefocus$i/a “;
}
break;
}
//當前頁大於等於總頁數
if($_GET[‘page’]=$pagecount){
break;
}
}
}
//當前頁不是首頁
if($_GET[‘page’]!=”1″){
$a=$_GET[‘page’]-1;
//if($_GET[‘page’]4){
$p = ” a href='”.get_url(1).”‘ hidefocus/a a href='”.get_url($a).”‘ hidefocus/a “.$p;
//}
}
//當前頁不是尾頁
if($_GET[‘page’]$pagecount){
$a=$_GET[‘page’]+1;
if($_GET[‘page’]$pagecount-2){
$p = $p.” a href='”.get_url($a).”‘ hidefocus/a a href='”.get_url($pagecount).”‘ hidefocus/a “;
}
else{
$p = $p.” a href='”.get_url($a).”‘ hidefocus/a “;
}
}
return $p;
}
//獲取分頁的URL
function get_url($page){
//默認的
if(empty($_SERVER[‘QUERY_STRING’])){ //empty變量是否為空 $_SERVER[‘QUERY_STRING’] URL中第一個問號?之後的內容
return $_SERVER[‘PHP_SELF’].’?page=’.$page; //$_SERVER[‘PHP_SELF’] 當前正在執行腳本的文件名
}
//有分頁的
elseif(strpos($_SERVER[‘QUERY_STRING’],’page’)!== false){ //strpos獲取字符串page首次出現位置(判斷是否有參數page)
//有參數
if(strpos($_SERVER[‘QUERY_STRING’], ”) !== false){ //有多個參數
$u = explode(‘page’, $_SERVER[‘QUERY_STRING’]);
return $_SERVER[‘PHP_SELF’].’?’.$u[0].’page=’.$page;
}
//無參數的
else{
return $_SERVER[‘PHP_SELF’] . ‘?page=’ . $page;
}
}
//有參數,無分頁的
else{
return $_SERVER[‘PHP_SELF’].’?’.$_SERVER[‘QUERY_STRING’].’page=’.$page;
}
}
php分頁功能怎麼實現
php本身是沒有分頁概念的,分頁是URL傳參,然後通過mysql查詢語句到數據庫獲取數據,然後實現的分頁,url上的參數,通過PHP的$_GET都是可以獲取到的。
現在市面上的PHP框架基本都有PHP分頁類,參照文檔直接調用就好了,如果想看實現過程,可以去下載一個TP框架,然後打開裡面的分頁類查看裡面的源代碼。
原創文章,作者:MXRQ,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/134308.html