2012-12-31 56 views
1

可能重复:
Break up PHP Pagination links歇个页面链接到最多5

我用我的网页上的简单分页和其工作正常。但是,我的问题是,当寻呼链接达到很多数量,如

Page:[1],[2],[3],[4],[5],[6],[7],[8 ],[9],[10],[11],[12],[13],[14],[15]等等。

我想把它切成5个链接,然后显示一个按钮用于下一5个链接等:

页:[1],[2],[3],[4],[5 ] [下5]。

当我点击[Next 5],它会显示[前5] [6],[7],[8],[9],[10] [下一个5]和当前页面是在第6页。

(粗体字符表示当前页。)

下面是代码进行修改:

$perpage = 10; 

if(isset($_GET["pagenum"])) { 
    $page = intval($_GET["pagenum"]); 
} else { 
    $page = 1; 
} 
$calc = $perpage * $page; 
$start = $calc - $perpage; 

$orders_count = 150; 
$rowss = $orders_count; 

if($rowss) { 
    $total = $orders_count; 
} 

$totalPages = ceil($total/$perpage); 

if($page <=1) { 
    $feedbacks .= ""; 
} else { 
    $j = $page - 1; 
    $feedbacks .= "<a class='first-page' title='Go to the first page' href='" . $path . "&pagenum=$j'>&laquo;</a>"; 
} 

for($i=1; $i <= $totalPages; $i++) { 
    if($i<>$page) { 
    $feedbacks .= "<a class='first-page' title='Go to the first page' href='" . $path . "&pagenum=$i'>$i</a>"; 
    } else { 
    $feedbacks .= "<a class='first-page disabled' title='Go to the first page' href='#'>$i</a>"; 
    } 
} 

if($page == $totalPages) { 
    $feedbacks .= ""; 
} else { 
    $j = $page + 1; 
    $feedbacks .= "<a class='last-page' title='Go to the first page' href='" . $path . "&pagenum=$j'>&raquo;</a></span>"; 
} 

$feedbacks .= "</div>"; 
echo $feedbacks; 
+2

随着个人喜好的问题,我认为,一个空间是不够的大多数语言。我强烈建议你转移到其中一个更常用的两个或四个空间。 –

+2

或使用标签。 PSR标准和PEAR都表示要使用四个空格,但所有人都讨厌这个问题。 –

+0

你在使用分页插件吗?他们中的大多数人都可以选择这样做。 – Barmar

回答

1

这是一个有趣的问题:)

希望它有帮助。

<?php 
//set params 
$total = 283; 
$maxPerPage = 10; 
$cutStarting = 5; 
$totalPages = ceil($total/$maxPerPage); 
$prevPageNum = 0; 

//set currentPageId 
$currentPage = isset($_GET['pagenum']) ? intval($_GET['pagenum']) : 1; 

if ($currentPage > $totalPages && $currentPage < 1) { 
    $currentPage = 1; 
} 

//set first row (maybee for limits in mysql query) 
$firstRow = ($currentPage * $maxPerPage) - ($maxPerPage) + 1; 

//calculate prev link pageId 
if ($currentPage > $cutStarting) { 
    $prevPageNum = floor(($currentPage - 1)/$cutStarting) * $cutStarting; 
    echo '[ <a href="?pagenum='.$prevPageNum.'">Prev 5</a> ] '; 
} 

//generate number page links 
$links = ''; 
$first = ($prevPageNum + 1); 
$last = $first + $cutStarting; 

for ($i=($prevPageNum + 1); $i < $last; $i++) { 
    if ($i <= $totalPages) { 
     if ($currentPage == $i) { 
      $links .= '[ <b>'.$i.'</b> ] '; 
     } else { 
      $links .= '[ <a href="?pagenum='.$i.'">'.$i.'</a> ] '; 
     } 
    } 
} 

echo ' '.$links; 

//calculate next link pageId 
$nextPageNum = (ceil($currentPage/$cutStarting) * $cutStarting) + 1; 
if ($nextPageNum <= $totalPages) { 
    echo '[ <a href="?pagenum='.$nextPageNum.'">Next 5</a> ] '; 
} 


//get some infos for testing 
echo '<br /><br />Testing<hr>'; 
echo 'Total Pages: '.$totalPages.'<br />'; 
echo 'Current Page: '.$currentPage.'<br />'; 
echo 'First Row: '.$firstRow; 
?> 

注:做这样的事情在javascipt的,是服务器更好;)

+0

+1对于javascript建议 – Sir

+0

@rcro对我的代码中的'$ calc'和'$ start'怎么样?我用这些变量在MySQL查询像'LIMIT“ $开始。”,“。$ perpage'谢谢rcro – Ken

+0

@Ken您$开始是$ FIRSTROW我exectutable例如等于。 – spinsch