使用分页计算特定页面中的结果数 - PHP

时间:2011-06-16 17:03:20

标签: php pagination

我有来自MySQL查询或Array或其他内容的搜索结果。结果给出了变量$totalfiles,例如25。结果的数量仅限于$limit,此处为12。计算的最大网页数$maxpages3

在我们考虑这个案例时,第1页和第2页将获得12个结果,第3页将获得1个结果。

有人建议我使用变量$totalfiles$limit$maxpages$pagenumber预测(或计算)特定网页中的结果数量的最简单方法PHP?我不认为所有这4个变量都是必要的。

提前致谢..

5 个答案:

答案 0 :(得分:7)

唯一允许使用与$ limit不同的数字的页面是最后一页。别忘了。最后一页将始终具有整数除法的余数

$last_page_items = $totafiles % $limit;

如果$ last_page_items为0,则表示您拥有包含$ limit items的所有页面

另外,

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

答案 1 :(得分:2)

R =给定页面上的行数 P ,其中P从1开始。
T =总行数
L =每页行数

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

然后只需添加一个检查,如果R< 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;
}

答案 2 :(得分: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;

答案 3 :(得分:0)

如果您希望将结果均匀分布在最大页数(按照建议的3),您可以使用:

$results_per_page = ($totalfiles/$maxpages);

否则,您已经在$ limit变量上计算了每页的结果数。

答案 4 :(得分: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,因为它仅用于控制数据库的结果。