php使用mysql数据库分页显示100页,怎么只输出前后5页的超链接,中间的用省略号显示
1个回答
展开全部
这个得用程序去判断,根据每页显示的记录条数和记录总数做处理,给你个思路吧。
function getTotalPagesStr ( $total ,$maxPageItems ){
$totalPages = 0;
if ( $total % $maxPageItems == 0 ){
$totalPages = $total/$maxPageItems ;
if ( $totalPages == 0 )
$totalPages = 1;
}
else{
$totalPages = (int)($total/$maxPageItems) + 1 ;
}
return '<span>共'.$total.'条记录,'.$totalPages.'页</span>';
}
function getTotalPages ( $total ,$maxPageItems ){
$totalPages = 0;
if ( $total % $maxPageItems == 0 ){
$totalPages = $total/$maxPageItems ;
if ( $totalPages == 0 )
$totalPages = 1;
}
else{
$totalPages = (int)($total/$maxPageItems) + 1 ;
}
return $totalPages;
}
function getPageUrl ( $page ){
$url = $_SERVER['PHP_SELF'] ;
$i = 0;
$queryStr = '';
foreach ($_GET as $key=>$value)
{
if ($key != 'page'){
if ( $i == 0 ) {
if ( is_array($value) ){
$j = 0;
foreach ( $value as $simpleValue ){
if ( $j == 0 ){
$queryStr = $queryStr.'?'.$key.'[]='.$simpleValue;
}
else {
$queryStr = $queryStr.'&'.$key.'[]='.$simpleValue;
}
$j ++ ;
}
}
else {
$queryStr = $queryStr.'?'.$key.'='.$value;
}
}
else {
if ( is_array($value ) ){
foreach ( $value as $simpleValue ){
$queryStr = $queryStr.'&'.$key.'[]='.$simpleValue;
}
}
else {
$queryStr = $queryStr.'&'.$key.'='.$value;
}
}
$i ++ ;
}
}
foreach ($_POST as $key=>$value)
{
if ($key != 'page' && $key !='submit'){
if ( $i == 0 ) {
if ( is_array($value) ){
$j = 0;
foreach ( $value as $simpleValue ){
if ( $j == 0 ){
$queryStr = $queryStr.'?'.$key.'[]='.$simpleValue;
}
else {
$queryStr = $queryStr.'&'.$key.'[]='.$simpleValue;
}
$j ++ ;
}
}
else {
$queryStr = $queryStr.'?'.$key.'='.$value;
}
}
else {
if ( is_array($value ) ){
foreach ( $value as $simpleValue ){
$queryStr = $queryStr.'&'.$key.'[]='.$simpleValue;
}
}
else {
$queryStr = $queryStr.'&'.$key.'='.$value;
}
}
$i ++ ;
}
}
if ($i != 0 ){
return $url.$queryStr.'&page='.$page;
}
return $url.'?page='.$page;
}
function getPageDisplay ( $total ,$maxPageItems , $currentPage , $maxShowPages ,
$pageSeparator ){
$totalPages = getTotalPages ( $total ,$maxPageItems );
$pageDispayStr = '';
$ppage = 0 ;
$startPage = 0;
$endPage = 0;
if ( $currentPage % $maxShowPages == 0 )
$ppage = (int) ($currentPage/$maxShowPages) - 1 ;
else
$ppage = (int) ($currentPage/$maxShowPages) ;
$startPage = $ppage * $maxShowPages + 1;
if ( $totalPages <= ( $ppage + 1 )*$maxShowPages ){
$endPage = $totalPages;
}
else{
$endPage = ( $ppage + 1 )*$maxShowPages ;
}
if ( $totalPages > $maxShowPages ){
if ( $currentPage == 1 ){
$pageDispayStr = $pageDispayStr.'<span>[第一页/上一页]</span>';
}
else{
$pageDispayStr = $pageDispayStr.'[<a href=\''.getPageUrl (1 ).'\' >第一页</a>/';
$pageDispayStr = $pageDispayStr.'<a href=\''.getPageUrl ($currentPage-1 ).'\' >上一页</a>]';
}
}
if ( $startPage == 1 ){
$pageDispayStr = $pageDispayStr.'<span><</span>';
}
else{
$pageDispayStr = $pageDispayStr.' <a href=\''.getPageUrl ($startPage-1 ).'\' ><<</a> ';
}
for ( $i = $startPage ; $i <= $endPage ; $i ++ ){
if ( $i != $currentPage ){
$pageDispayStr = $pageDispayStr.'<a href=\''.getPageUrl ($i ).'\' >'.$i.'</a>';
if ( $i != $endPage ){
$pageDispayStr = $pageDispayStr.$pageSeparator;
}
$pageDispayStr = $pageDispayStr.' ';
}
else {
$pageDispayStr = $pageDispayStr.'<span class="current">'.$i.'</span>' ;
if ( $i != $endPage ){
$pageDispayStr = $pageDispayStr.$pageSeparator;
}
$pageDispayStr = $pageDispayStr.' ';
}
}
if ( $endPage == $totalPages ){
$pageDispayStr = $pageDispayStr.' <span>>></span> ';
}
else{
$pageDispayStr = $pageDispayStr.'<a href=\''.getPageUrl ( $endPage + 1).'\' >>></a> ';
}
if ( $totalPages > $maxShowPages ){
if ( $currentPage == $totalPages ){
$pageDispayStr = $pageDispayStr.'<span>[下一页/最后一页]</span>';
}
else{
$pageDispayStr = $pageDispayStr.'[<a href=\''.getPageUrl ($currentPage + 1 ).'\' >下一页</a>';
$pageDispayStr = $pageDispayStr.'/<a href=\''.getPageUrl ( $totalPages ).'\' >最后一页</a>]';
}
}
return getTotalPagesStr ( $total ,$maxPageItems ).$pageDispayStr;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询