程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> PHP+Mysql————數據分頁顯示技術

PHP+Mysql————數據分頁顯示技術

編輯:MySQL綜合教程

PHP+Mysql————數據分頁顯示技術


通常情況下,一個頁面加載大量的數據時,數據不可能同時顯示出來。這時候,比較常用的方法就是滾動條和分頁。看過電子書的孩子都知道,電子書那麼多字,一個手機或pad的屏幕是無法全部顯示的,開玩笑,一本幾兆的書就好幾百萬字,一下子放到幾寸的屏幕上,不得亮瞎你的眼。所以我們都是下滑使文字進行滾動或翻頁。這篇博文就用來分享一下php的分頁技術。

首先獲取數據庫中某表的數據,輸出到網頁上,然後再進行分頁顯示。一句話就講明白了,但具體怎麼分頁的,請看代碼。

<?php
	header("content-type:text/html;charset=utf-8");
	//連接mysql數據庫
	$conn=mysql_connect("localhost","","");
	
	//選擇數據庫
	mysql_select_db("test");

	//設置客戶端和連接字符集
	mysql_query("set names utf8");
	
	//limit要求參數
	$length=15;
	$pagenum=@$_GET['page']?$_GET['page']:1;
	
	//數據總行數
	$sqltot="select count(*) from t1";
	$arrtot=mysql_fetch_row(mysql_query($sqltot));
	$pagetot=ceil($arrtot[0]/$length);

	//限制頁數
	if($pagenum>=$pagetot){
		$pagenum=$pagetot;
	}
	$offset=($pagenum-1)*$length;
	
	//從數據庫獲取數據
	$sql="select * from t1 order by id limit {$offset},{$length}";

	$result=mysql_query($sql);
	echo "<h1>用戶信息表</h1>";
	echo "<table width='700px' border='1px'>";
	while($row=mysql_fetch_assoc($result)){
		echo "<tr>";
		echo "<td>{$row['id']}</td>";
		echo "<td>{$row['username']}</td>";
		echo "<td>{$row['password']}</td>";
		echo "</tr>";
	}
	echo "</table>";
	
	//計算上一頁和下一頁
	$prevpage=$pagenum-1;
	$nextpage=$pagenum+1;

	echo "<h2><a href='index.php?page={$prevpage}'>上一頁</a><a href='index.php?page={$nextpage}'>下一頁</a></h2>";

	//釋放連接資源
	mysql_close($conn);
?>

技術要點就是在mysql中的limit。
$sql="select * from table limit m,n";
limit後面的兩個參數分別是起始點與偏移量。m可以不寫,自動默認為0.表示限制獲取的記錄從m開始到m+n結束。通過將變量作為參數傳入,可以靈活的控制每頁的顯示數量。

翻頁的時候,需要添加兩個超鏈接,鏈接地址中添加$page和$prevpage,$nextpage變量,通過$prevpage和$nextpage的變化,讓每頁顯示的數據不同。

但是僅僅做到這兩點,只能保證分頁顯示成功,一旦頁數遞增到數據所在范圍,就會發生沒有數據,但可以繼續翻頁的結果。所以,為了完善分頁顯示,還必須限制翻頁的頁數。頁數=總記錄/單頁顯示記錄。然後進一取整,用ceil()函數就搞定。不過,在獲取到記錄集之前就要進行限制,也就必須獲取總記錄數。這裡推薦的比較好的方法就是count(*)獲取總行數,然後用mysql_fetch_row將值挖出來。返回後的數組,第一個值就是總記錄值。可以邊看代碼邊理解。取得最大頁數之後,一個if語句進行判斷一下,就可以做到頁數的限制,保證了翻到數據的最後一頁就翻不過去了。

最後一點提的就是@

	$pagenum=@$_GET['page']?$_GET['page']:1;
在這個三元運算前面加@是為了忽略掉php的Notice。因為$page屬於不確定的索引。它到了代碼最後的超鏈接才排上用場。當然,還有很多方法可以忽略掉警告,比如修改php的配置文件。這就看個人喜好了。不必糾結與一個@。

 

上兩張分頁顯示的圖(美化和數據忽略不記,實例而以)

\

\

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved