2012-12-31 96 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