/**
* 产生分页链接
*
* @param Integer $intSum
* @param Integer $intPage
* @param Integer $intPerPage
* @param String $strURI
* @return String
*
* @Example: $strMultipage = multi(121, $_GET['page'], 20, 'index.php');
* @Example: $strMultipage = multi(121, $_GET['page'], 20, 'index.php?type=2');
*
*/
function multi($intSum, $intPage, $intPerPage, $strURI)
{
if ($intSum <= $intPerPage || $intPerPage == 0) {
return '';
}
$strURI .= strpos($strURI, '?') ? '&' : '?';
$intPages = ceil($intSum / $intPerPage);
$intPageNum = 10;
$intOffset = floor($intPageNum / 2);
$intMinPage = ($intPage < $intOffset) ? 1 : $intPage - $intOffset + 1;
$intMinPage = ($intPage + $intOffset > $intPages) ? $intPages - $intPageNum + 1: $intMinPage;
$intMinPage = $intMinPage > 0 ? $intMinPage : 1;
$intMaxPage = $intMinPage + $intPageNum - 1;
$intMaxPage = $intMaxPage <= $intPages ? $intMaxPage : $intPages;
$strPages = '';
for($i = $intMinPage; $i <= $intMaxPage; $i++) {
if ($i == $intPage) {
$strPages .= ' <b>[ ' . $i . ' ]</b>';
} else {
$strPages .= ' <a href="' . $strURI . 'page=' . $i . '" class="blueLink">[ ' . $i . ' ]</a>';
}
}
if ($intPage != 1) {
$strPages = '<a href="' . $strURI . 'page=1" class="blueLink">首页</a> <a href="' . $strURI . 'page=' . ($intPage - 1) . '" class="blueLink">上一页</a>' . $strPages;
} else {
$strPages = '首页 上一页' . $strPages;
}
if ($intPage != $intPages) {
$strPages .= ' <a href="' . $strURI . 'page=' . ($intPage + 1) . '" class="blueLink">下一页</a> <a href="' . $strURI . 'page=' . $intPages . '" class="blueLink">末页</a>';
} else {
$strPages .= ' 下一页 末页';
}
return $strPages;
}完整实例:
<?php
// 建立数据库连接
$link = mysql_connect("localhost", "root", "wyh7ye") ;
;// 获取当前页数
mysql_select_db("test",$link);
if(isset($_GET[’page’]))...{
$page = intval($_GET[’page’]);
}
else...{
$page = 1;
}
// 每页数量
$page_size =4;
// 获取总数据量
$sql = "select * from user";
$result = mysql_query($sql,$link);
while($row = mysql_fetch_array($result))...{
$i=$i+1;
}
$amount = $i;
// 记算总共有多少页
if( $amount )...{
if( $amount < $page_size )...{ $page_count = 1; } //如果总数据量小于$PageSize,那么只有一页
if( $amount % $page_size )...{ //取总数据量除以每页数的余数
$page_count = (int)($amount / $page_size) + 1; //如果有余数,则页数等于总数据量除以每页数的结果取整再加一
}else...{
$page_count = $amount / $page_size ; //如果没有余数,则页数等于总数据量除以每页数的结果
}
}
else...{
$page_count = 0;
}
// 获取数据,以二维数组格式返回结果
if( $amount )...{
$sql = "select * from user order by id desc limit ". ($page-1)*$page_size .",$page_size";
$result =mysql_query($sql,$link);
while ($row =mysql_fetch_array($result))...{
?>
<table width="100%" border="0" cellspacing="2" cellpadding="0">
<tr>
<td bgcolor="#CCCCCC" width="25%"><?php echo $row[0];?></td>
<td bgcolor="#FFCCFF" width="25%"><?php echo $row[1];?></td>
<td bgcolor="#FFFFCC" width="25%"><?php echo $row[2];?></td>
<td bgcolor="#CCCCCC" width="25%"><?php echo $row[3];?></td>
</tr>
</table>
<?php
}
}
// 翻页链接
$page_string ="";
if( $page == 1 )...{
$page_string.="第一页|上一页|";
}
else...{
$page_string.= "<a href=?page=1>第一页</a>|<a
href=?page=".($page-1).">上一页</a>|";
}
if( ($page == $page_count) || ($page_count == 0) )...{
$page_string.=" 下一页|尾页";
}
else...{
$page_string.= "<a href=?page=".($page+1).">下一页</a>|<a href=?page=".$page_count.">尾页</a>";
}
echo $page_string;
?>