PHP從零單排(十四)數據分頁顯示的原理及實現

分頁顯示是WEB編程中最頻繁處理的環節之一。所謂分頁顯示,就是通過程式將結果集一段一段的來顯示。實現分頁顯示,需要兩個初始參數:每頁顯示多少記錄和當前是第幾頁。再加上完整的結果集,就可以實現數據的分頁顯示。至於其他功能,比如上一頁、下一頁等均可以根據以上信息加以處理得到。

要取得某表中的前10條記錄,可以使用如下SQL語句:

SELECT * FROM a_table LIMIT 0,10

要查找第11到第20條記錄,使用的SQL語句如下所示:

SELECT * FROM a_table LIMIT 10,10

如要查找第21條到第30條記錄,使用的SQL語句如下所示:

SELECT * FROM a_table LIMIT 20,10

以上SQL語句可以看出,每次取10條記錄,相當於每個頁面顯示10條數據,而每次所要取得記錄的起始位置和當期頁數之間存在著這樣的關系:起始位置=(當前頁數-1)*每頁要顯示的記錄數。如果以變量$page_size表示每頁顯示的記錄數,以變量$cur_page表示當前頁數,那麼上述可以用下面所示的SQL語句模板歸納:

select * from table limit ($cur_page-1)*$page_size,$page_size;

這樣,就得到瞭分頁情況下獲取數據的SQL語句。其中$page_size可以根據實際情況制定為一個定值,實際開發中,當前頁面$cur_page可以由參數傳入。另外,數據要顯示的總頁數,可以在記錄總數和每頁顯示的記錄數之間通過計算獲得。比如,如果總記錄數除以每頁顯示的記錄數後,沒有餘數,那麼總頁數就是這二者之商。

<?php
$host='localhost';
$user_name='root';
$password='helloworld';
$conn=mysql_connect($host,$user_name,$password);
if(!$conn)
{
	die('FAIL!'.mysql_error());
}
mysql_select_db('test');
if(isset($_GET['page']))
{
	$page=$_GET['page'];
}
else
{
	$page=1;
}
$page_size=2;
$sql='select * from users';
$result=mysql_query($sql);
$total=mysql_num_rows($result);
if($total)
{
	if($total<$page_size)
	$page_count=1;
	if($total%$page_size)
	{
		$page_count=(int)($total/$page_size)+1;
	}
	else
	{
		$page_count=$total/$page_size;
	}
}
else
{
	$page_count=0;
}
$turn_page='';
if($page==1)
{
	$turn_page.='Index | Before |';
}
else
{
	$turn_page.='Index | Before |';
}
if($page==$page_count || $page_count==0)
{
	$turn_page.='Next | Last';
}
else
{
	$turn_page.=' Next  |  Last ';
}
$sql='select id,name,sex,age from users limit '.($page-1)*$page_size.','.$page_size;
$result=mysql_query($sql) OR die ("
ERROR:".mysql_error()."
SQL:".$sql); ?> 13-8.php

**********************

POST GET ,是提交表單的兩種方式,GET傳值就用$_GET獲取,POST提交表單就用$_POST
post與get的區別是一個在地址欄顯示參數,另一個不顯示

舉個例子,如果你登錄的時候用get方式,那麼你的值就會在地址欄上顯示,這樣就無安全性可言
而你在搜索或者有頁碼的時候 用post把參數在地址欄上隱藏起來,這樣就毫無意義

而用$_GET可以獲得瀏覽器地址欄上的參數的值(?問號後面的一串字符),比如www.baidu.com/s?wd=123,那麼你用$_GET,就可以獲取參數(你可以理解為事件,動作,或者參數,該值在傳遞表單時與input的name一致)為wd的值123,多個參數用&符連接,比如?an=0&si=5理解為an參數的值為0與si參數的值為5。

**********************

打個比方說,你輸入一個地址叫 www.iron-feet.cn/?page=2
$_GET[“page”]就是獲得地址上這個page的值,即得到2

You May Also Like

ID

Name

Sex

Age