2011-06-16 50 views
3

我從MySQL查詢或Array或其他內容中搜索到結果。結果給出了變量$totalfiles,例如25。結果的數量限於$limit,這裏是12。計算的最大頁數$maxpages將爲3使用分頁計算特定頁面中的結果數量 - PHP

當我們考慮的話,我們將得到第12個結果頁面1和2,和1 3

有人建議我來預測(或計算)的結果數最簡單的方法使用變量$totalfiles,$limit,$maxpages$pagenumber的特定頁面我不認爲所有這些4個變量是必要做這個..提前

謝謝..

+0

」不是個t由$ limit控制的特定頁面中的總體結果?這是我對你寫的內容的理解。也許除了「限制每頁這個數量的限制」之外,$ limit還有其他含義? – SRM 2011-06-16 17:05:48

回答

7

允許有一個數字與$ limit不同的唯一頁面是最後一個。不要忘記這一點。而最後一頁永遠有整數除法

$last_page_items = $totafiles % $limit; 

如果$ last_page_items爲0的剩餘部分,意味着你有$限制的項目

也是所有頁面,

$pages = ceil($totalfiles/$limit); 
0

如果你想在頁面的最大數量,這是3,你有均勻分佈的結果建議,您可以使用:

$results_per_page = ($totalfiles/$maxpages); 

否則,您已經有了根據您的$ limit變量計算的每頁結果數。

1

最大的網頁:Total files, divided by the limit. If the remainder is greater than 0, add one.

$maxpages = $totalfiles/$limit; 
if ($totalfiles % $limit > 0) $maxpages++; 

編號當前頁上:if Page number less than Max page, there are limit results. If Page number is the Max page, there are (Remainder of Total Files divided by limit) results if that remainder is greater than 0, otherwise limit.

$results = $limit; 
$rem = $totalfiles % limit; 
if ($pagenumber == $maxpages && $rem > 0) $results = $rem; 
2

ř =給定頁面上的行數,P,其中P從1開始。
T =總行數
大號 =每頁的行數

R =叔 - ((P-1)* L)

然後,只需添加一個檢查之後如果R 0 <

到集合R 0代碼:

function get_num_rows_on_page($page, $total_rows, $per_page) { 
    $on_page = $total_rows - (($page-1) * $per_page); 
    return $on_page < 0 ? 0 : $on_page; 
} 
0

試試這個:

function getPageSize($total, $maxpages, $pagenumber){ 

    $itemsperpage=intval($total/$maxpages); 
    if($pagenumber == $maxpages){ 
     $itemslastpage=abs($total-($itemsperpage*$maxpages)); 
     return $itemslastpage; 
    }else{ 
     return $itemsperpage; 
    } 
} 

// should print '5' 
echo getPageSize(29,6,6) . "\n"; 

// should print '7' 
echo getPageSize(14,2,1) . "\n"; 

請注意,$limit不需要,因爲它僅用於控制數據庫的結果。