本文目錄一覽:
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分頁顯示最簡單代碼
簡單寫法:
?php
include
(“./config/conn.php”);
$sql=”select
*
from
ly
order
by
id
desc”;
$result=mysql_query($sql);
$num=mysql_num_rows($result);
//統計行數
$pages=ceil($num/5);
//總頁數
$page=$_GET[‘page’];
//獲得page,如果沒有設置或者page=0,把$page=1;
if(!isset($page)
||
$page==0)
$page=1;
$start=($page-1)*5;
$sql=”select
*
from
ly
order
by
id
desc
limit
$start,5″;
mysql_query($sql);
if($sumpage!=0)
{
if($page!=1)
{
echo
“a
href=$PHP_SELF?page=1首頁/a\t”;
}else
{
echo
“首頁\t”;
}
if($page1)
{
echo
“a
href=$PHP_SELF?page=”.($page-1).”上一頁/a\t”;
}else
{
echo
“上一頁\t”;
}
if($page$pages)
{
echo
“a
href=$PHP_SELF?page=”.($page+1).”下一頁/a\t”;
}else
{
echo
“下一頁\t”;
}
if($page!=$pages)
{
echo
“a
href=$PHP_SELF?page=”.$pages.”尾頁/a\t”;
}else
{
echo
“尾頁\t”;
}
}else
{
echo
“目前沒有記錄!!”;
}
求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分頁代碼
?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/258310.html