來源:互聯網
上載者:User
關鍵字
程式
page
out
maxPage
i
PHP代碼:--------------------------------------------------------------------------------
PHP分頁
//為了便於理解和更快地應用到工作中去,我們以MS SQL Server的NorthWind資料庫Customers表為例。
$pageSize= 4; //每頁顯示的記錄數
$hostname = "localhost"; //MSSQL Server
$dbuser = "sa"; //使用者名稱
$dbpasswd = ""; //密碼
//串連資料庫
$conn = mssql_connect($hostname,$dbuser,$dbpasswd) or die("無法串連資料庫伺服器!");
//選擇資料庫,為了方便,這裡以MSSQL Server的pubs資料庫為例
$db = mssql_select_db("NorthWind",$conn) or die("無法串連資料庫!");
//以Customers表為例,構建查詢字串
$sql = "SELECT * FROM Customers";
//執行查詢語句
$res = mssql_query($sql) or die("無法執行SQL:$sql");
//$page變數標示當前顯示的頁
if(!isset($page)) $page=1;
if($page==0) $page=1;
//得到當前查詢到的紀錄數 $totalNum
$totalNum= mssql_num_rows($res);
if($totalNum<=0)
{
echo "
沒有紀錄";
exit;
}
//得到最大頁碼數maxPage
$maxPage = (int)ceil($totalNum/$pageSize);
if((int)$page > $maxPage)
$page=$maxPage;
?>
//顯示表格頭 for($i = 0; $i < mssql_num_fields($res); $i++) { echo "
".mssql_field_name($res,$i)." | " ; } ?>
//根據位移量($page - 1)*$pageSize,運用mssql_data_seek函數得到要顯示的頁面if( mssql_data_seek($res,($page-1)*$pageSize) ){ $i=0; //迴圈顯示當前紀錄集 for($i;$i<$pageSize;$i++){ echo "
"; //得到當前紀錄,填充到數組$row; $row= mssql_fetch_row($res); if($row) { //迴圈顯示當前紀錄的所有欄位值 for($j = 0;$j < count($row);$j++) { echo "
".$row[$j]." | "; } } echo "
"; }}?>
$style = "2";
switch($style)
{
//格式: [首頁] [上頁] [下頁] [末頁]
case "1":
{
$out = "";
$out .= "[共".$maxPage."頁] [第".$page."頁] ";
//首頁和上頁的連結
if( $totalNum>1 && $page>1)
{
$prevPage=$page-1;
$out .= " [首頁] ";
$out .= " [上頁] ";
}
//下頁和末頁的連結
if( $page>=1 && $page<$maxPage)
{
$nextPage= $page+1;
$out .= " [下頁] ";
$out .= " [末頁]";
}
$out .= "";
echo $out;
}
break;
//格式: 1 2 3 4 5
case "2":
{
$linkNum = "4";//頁面上顯示串連的個數顯示
$out = "第 ";
$start = ($page-round($linkNum/2))>0 ? ($page-round($linkNum/2)) : "1";
$end = ($page+round($linkNum/2))<$maxPage ? ($page+round($linkNum/2)) : $maxPage;
if($page<>1)
$out .= "1 << ";
//for($t=1;$t<=$maxPage;$t++)
for($t=$start;$t<=$end;$t++)
{
$out .= ($page==$t) ? "
".$t." " : "$t ";
}
if($page<>$maxPage)
$out .= ">> $maxPage";
$out .= " 頁";
echo $out;
}
break;
//select下拉框直接跳轉
case "3":
{
$out = "";
$out .= "第 "; for($i=1; $i<=$maxPage; $i++) { $out .= "$i"; } $out .= " 頁";
$out .= "";
echo $out;
}
break;
default:
echo "";
break;
}
?>