/** * 产生分页链接 * * @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; ?>