php類分頁代碼,php分頁頁碼動態的實現

本文目錄一覽:

php分頁代碼 怎麼寫

 Web開發是今後分散式程式開發的主流,通常的web開發都要涉及到與資料庫打交道,客戶端從伺服器端讀取通常都是以分頁的形式來顯示,一頁一頁的閱讀起來既方便又美觀。所以說寫分頁程序是web開發的一個重要組成部分,在這裡,我們共同來研究分頁程序的編寫。

一、分頁程序的原理

分頁程序有兩個非常重要的參數:每頁顯示幾條記錄($pagesize)和當前是第幾頁($page)。有了這兩個參數就可以很方便的寫出分頁程序,我們以MySql資料庫作為數據源,在mysql里如果要想取出表內某段特定內容可以使用的 T-SQL語句:select * from table limit offset,rows來實現。這裡的offset是記錄偏移量,它的計算方法是offset=$pagesize*($page-1),rows是要顯示的記錄條數,這裡就是$page。也就是說select * from table limit 10,10這條語句的意思是取出表裡從第11條記錄開始的20條記錄。

二、主要代碼解析

$pagesize=10; //設置每一頁顯示的記錄數

$conn=mysql_connect(“localhost”,”root”,””); //連接資料庫

$rs=mysql_query(“select count(*) from tb_product”,$conn); //取得記錄總數$rs

$myrow = mysql_fetch_array($rs);

$numrows=$myrow[0];

//計算總頁數

$pages=intval($numrows/$pagesize);

//判斷頁數設置

if (isset($_GET[‘page’])){

 $page=intval($_GET[‘page’]);

}

else{

 $page=1; //否則,設置為第一頁

}

三、創建用例用表myTable

create table myTable(id int NOT NULL auto_increment,news_title varchar(50),news_cont text,add_time datetime,PRIMARY KEY(id))

四、完整代碼

<html>

<head>

<title>php分頁示例</title>

<meta http-equiv=”Content-Type” content=”text/html; charset=gb2312″>

</head>

<body>

<?php

 $conn=mysql_connect(“localhost”,”root”,””);

 //設定每一頁顯示的記錄數

 $pagesize=1;

 mysql_select_db(“mydata”,$conn);

 //取得記錄總數$rs,計算總頁數用

 $rs=mysql_query(“select count(*) from tb_product”,$conn);

 $myrow = mysql_fetch_array($rs);

 $numrows=$myrow[0];

 //計算總頁數

 $pages=intval($numrows/$pagesize);

 if ($numrows%$pagesize)

$pages++;

 //設置頁數

 if (isset($_GET[‘page’])){

$page=intval($_GET[‘page’]);

 }

 else{

//設置為第一頁

$page=1;

 }

 //計算記錄偏移量

 $offset=$pagesize*($page – 1);

 //讀取指定記錄數

 $rs=mysql_query(“select * from myTable order by id desc limit $offset,$pagesize”,$conn);

 if ($myrow = mysql_fetch_array($rs))

 {

$i=0;

?>

<table border=”0″ width=”80%”>

<tr>

 <td width=”50%” bgcolor=”#E0E0E0″>

<p align=”center”>標題</td>

<td width=”50%” bgcolor=”#E0E0E0″>

<p align=”center”>發布時間</td>

</tr>

<?php

 do {

$i++;

?>

<tr>

 <td width=”50%”><?=$myrow[“news_title”]?></td>

 <td width=”50%”><?=$myrow[“news_cont”]?></td>

</tr>

 <?php

 }

 while ($myrow = mysql_fetch_array($rs));

echo “</table>”;

}

echo “<div align=’center’>共有”.$pages.”頁(“.$page.”/”.$pages.”)”;

for ($i=1;$i< $page;$i++)

 echo “<a href=’fenye.php?page=”.$i.”‘>[“.$i .”]</a> “;

 echo “[“.$page.”]”;

 for ($i=$page+1;$i<=$pages;$i++)

echo “<a href=’fenye.php?page=”.$i.”‘>[“.$i .”]</a> “;

echo “</div>”;

 ?>

</body>

</html>

五、總結

本例代碼在windows2000 server+php4.4.0+mysql5.0.16上運行正常。該示例顯示的分頁格式是[1][2][3]…這樣形式。假如想顯示成「首頁 上一頁 下一頁 尾頁」這樣形式,請加入以下代碼:

$first=1;

$prev=$page-1;

$next=$page+1;

$last=$pages;

if ($page > 1)

{

 echo “<a href=’fenye.php?page=”.$first.”‘>首頁</a> “;

 echo “<a href=’fenye.php?page=”.$prev.”‘>上一頁</a> “;

}

if ($page < $pages)

{

 echo “<a href=’fenye.php?page=”.$next.”‘>下一頁</a>

 echo “<a href=’fenye.php?page=”.$last.”‘>尾頁</a> “;

}

其實,寫分頁顯示代碼是很簡單的,只要掌握了它的工作原理。希望這篇文章能夠帶給那些需要這方面程序web程序員的幫助。

求php分頁代碼

////////////////////////////////分頁/////////////////////////////

$pageListNum=20;//每頁顯示10條

$totalPage=0;//總頁數

$page=isset($page)?(int)$page:1;//當前頁

$start=($page-1)*$pageListNum;//起始編號

$totalPage=ceil($pageNum/$pageListNum);

require_once(WEB_CLASS.’/page_class.php’);

$page=new PageClass($page,$totalPage);

$showpage=$page-showPage();

echo $showpage;

///////////////page_class.php////////////////////////

?php

header(“Content-Type:text/html;charset=utf8”);

/**

* 分頁類

* URL有多個參數也能分頁,還能自定義分頁樣式

* php=5.0

* @version 0.1.1

* @copyright 2006-2010

* @package class

*/

class PageClass{

private $url;

private $cpage;

private $totalPage;

private $tpl;

/**

* PageClass的構造函數

* 模板說明:{index}表示首頁 {pagelist}鏈接列表 {option}下拉列表框 {next}下一頁 {pre}上一頁 {cur}當前頁 {index=首頁}表示首頁的鏈接文字為首頁,即=號後為鏈接文字,不過這對{pagelist}{option}無效

* @param string $cpage 當前頁

* @param string $tatolPage 總頁數

* @param string $tpl 模板.

* @param string $url 要分頁的url 默認為當前頁

* @return PageClass

*/

function __construct($cpage,$totalPage,$tpl=”,$url=”){

$this-cpage=$cpage;

$this-totalPage=$totalPage;

if(strlen($tpl)==0){

$this-tpl=”{cur=當前頁}{index=首頁} {pre=上一頁} {next=下一頁} {end=最後頁} {option}”; //中文分頁

}else{

$this-tpl=$tpl;

}

if(strlen($url)==0){

$this-url=$_SERVER[‘SERVER_NAME’].$_SERVER[“REQUEST_URI”];

}else{

$this-url=$url;

}

}

/**

* 函數showPage,返回生成的分頁HTML

* @return string

*/

function showPage(){

//顯示分頁

$urlOption=array();//url的後綴如:?page=1typeid=1

$parse_url=parse_url($this-url);

$urlMain=’http://’.$parse_url[‘path’];

if($parse_url[‘query’]){

//url有參數

$urlArr=split(”,$parse_url[‘query’]);

if(is_array($urlArr)){

foreach($urlArr as $key=$value){

$c=split(‘=’,$value);

if($c[0]==page){

}else{

array_push($urlOption,$c[0].’=’.$c[1]);

}

}

}

}else{

//url沒有參數

//if($this-cpage$this-totalPage){

// array_push($urlOption,”page=2″);

//}

}

if(is_array($urlOption)){

$urlOptionStr_t=implode(”,$urlOption);

}

if(strlen($urlOptionStr_t)0){

$urlOptionStr.=”.$urlOptionStr_t;

}

$tplcontent=$this-tpl;//分頁模板

$showPage=$tplcontent;

//首頁

if (preg_match_all(‘/\{index=([^}]*+)\}/’, $tplcontent, $matches)){

$t_tpl=$matches[0][0]; //模板內容

$t_word=$matches[1][0]; //分頁欄位

$indexStr=’a href=”‘.$urlMain.’?page=1′.$urlOptionStr.'”‘.$t_word.’/a’;

$showPage=str_replace($t_tpl,$indexStr,$showPage);

}

//當前頁

if (preg_match_all(‘/\{cur=([^}]*+)\}/’, $tplcontent, $matches)){

$t_tpl=$matches[0][0];

$t_word=$matches[1][0];

$curStr=$t_word.$this-cpage.’/’.$this-totalPage;

$showPage=str_replace($t_tpl,$curStr,$showPage);

}

//末頁

if (preg_match_all(‘/\{end=([^}]*+)\}/’, $tplcontent, $matches)){

$t_tpl=$matches[0][0];

$t_word=$matches[1][0];

$endPage=’a href=”‘.$urlMain.’?page=’.$this-totalPage.$urlOptionStr.'”‘.$t_word.’/a’;

$showPage=str_replace($t_tpl,$endPage,$showPage);

}

//上一頁

if (preg_match_all(‘/\{pre=([^}]*+)\}/’, $tplcontent, $matches)){

$t_tpl=$matches[0][0];

$t_word=$matches[1][0];

if($this-cpage1){

$prePage=’a href=”‘.$urlMain.’?page=’.($this-cpage-1).$urlOptionStr.'”‘.$t_word.’/a’;

}else{

$prePage=$t_word;

}

$showPage=str_replace($t_tpl,$prePage,$showPage);

}

//下一頁

if (preg_match_all(‘/\{next=([^}]*+)\}/’,$tplcontent, $matches)){

$t_tpl=$matches[0][0];

$t_word=$matches[1][0];

if($this-cpage$this-totalPage $this-totalPage1){

$nextPage=’ a href=”‘.$urlMain.’?page=’.($this-cpage+1).$urlOptionStr.'”‘.$t_word.’/a’;

}else{

$nextPage=$t_word;

}

$showPage=str_replace($t_tpl,$nextPage,$showPage);

}

//鏈接列表

if (preg_match(“{pagelist}”,$tplcontent)){

for($i=1;$i$this-totalPage+1;$i++){

$linkPage.=’ a href=”‘.$urlMain.’?page=’.$i.$urlOptionStr.'”‘.$i.’/a’;

}

$showPage=str_replace(‘{pagelist}’,$linkPage,$showPage);

}

//下拉框分頁

if (preg_match(“{option}”,$tplcontent)){

$optionPage=’select onchange=”javascript:window.location=’.”‘”.$urlMain.”?page=’+this.options[this.selectedIndex].value+”.”‘$urlOptionStr'”.’;”‘;

for($i=1;$i$this-totalPage+1;$i++){

if($i==$this-cpage){

$optionPage.=”option selected=’selected’ value=’$i’第”.$i.”頁/option\n”;

}else{

$optionPage.=”option value=’$i’第”.$i.”頁/option\n”;

}

}

$optionPage.=’/select’;

$showPage=str_replace(‘{option}’,$optionPage,$showPage);

}

return $showPage;

}

}

?

php分頁代碼

?php

/**

* @author SEPH

* @desc pageft

* @date 2009-4-20

*/

//為了避免重複包含文件而造成錯誤,加了判斷函數是否存在的條件:

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*/;

if(@$_GET[‘page’])

$page = intval($_GET[‘page’]);

else

$page = 1;

//如果$url使用默認,即空值,則賦值為本頁URL:

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

//URL分析:

$parse_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′ target=_self首頁/a “;

if($prepg) $pagenav.=” a href=’$url=$prepg’ target=_self前頁/a “; else $pagenav.=” 前頁 “;

if($nextpg) $pagenav.=” a href=’$url=$nextpg’ target=_self後頁/a “; else $pagenav.=” 後頁 “;

$pagenav.=” a href=’$url=$lastpg’ target=_self尾頁/a “;

//下拉跳轉列表,循環列出所有頁碼:

$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 頁,共 $lastpg 頁”;

}

}/*沒有用Get傳值*/

?

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

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

相關推薦

  • Python周杰倫代碼用法介紹

    本文將從多個方面對Python周杰倫代碼進行詳細的闡述。 一、代碼介紹 from urllib.request import urlopen from bs4 import Bea…

    編程 2025-04-29
  • QML 動態載入實踐

    探討 QML 框架下動態載入實現的方法和技巧。 一、實現動態載入的方法 QML 支持從 JavaScript 中動態指定需要載入的 QML 組件,並放置到運行時指定的位置。這種技術…

    編程 2025-04-29
  • Python字元串寬度不限制怎麼打代碼

    本文將為大家詳細介紹Python字元串寬度不限制時如何打代碼的幾個方面。 一、保持代碼風格的統一 在Python字元串寬度不限制的情況下,我們可以寫出很長很長的一行代碼。但是,為了…

    編程 2025-04-29
  • Python基礎代碼用法介紹

    本文將從多個方面對Python基礎代碼進行解析和詳細闡述,力求讓讀者深刻理解Python基礎代碼。通過本文的學習,相信大家對Python的學習和應用會更加輕鬆和高效。 一、變數和數…

    編程 2025-04-29
  • 倉庫管理系統代碼設計Python

    這篇文章將詳細探討如何設計一個基於Python的倉庫管理系統。 一、基本需求 在著手設計之前,我們首先需要確定倉庫管理系統的基本需求。 我們可以將需求分為以下幾個方面: 1、庫存管…

    編程 2025-04-29
  • Python滿天星代碼:讓編程變得更加簡單

    本文將從多個方面詳細闡述Python滿天星代碼,為大家介紹它的優點以及如何在編程中使用。無論是剛剛接觸編程還是資深程序員,都能從中獲得一定的收穫。 一、簡介 Python滿天星代碼…

    編程 2025-04-29
  • 寫代碼新手教程

    本文將從語言選擇、學習方法、編碼規範以及常見問題解答等多個方面,為編程新手提供實用、簡明的教程。 一、語言選擇 作為編程新手,選擇一門編程語言是很關鍵的一步。以下是幾個有代表性的編…

    編程 2025-04-29
  • Python實現簡易心形代碼

    在這個文章中,我們將會介紹如何用Python語言編寫一個非常簡單的代碼來生成一個心形圖案。我們將會從安裝Python開始介紹,逐步深入了解如何實現這一任務。 一、安裝Python …

    編程 2025-04-29
  • 怎麼寫不影響Python運行的長段代碼

    在Python編程的過程中,我們不可避免地需要編寫一些長段代碼,包括函數、類、複雜的控制語句等等。在編寫這些代碼時,我們需要考慮代碼可讀性、易用性以及對Python運行性能的影響。…

    編程 2025-04-29
  • 北化教務管理系統介紹及開發代碼示例

    本文將從多個方面對北化教務管理系統進行介紹及開發代碼示例,幫助開發者更好地理解和應用該系統。 一、項目介紹 北化教務管理系統是一款針對高校學生和教職工的綜合信息管理系統。系統實現的…

    編程 2025-04-29

發表回復

登錄後才能評論