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

使用分页-PHP计算特定页面中的结果数,php,pagination,Php,Pagination,我有一个来自MySQLquery或Array或其他内容的搜索结果。结果给出了一个变量$totalfiles,例如25。结果数量限制为$limit,此处为12。计算的最大页数,$maxpages,将为3 当我们考虑该情况时,我们将得到第1页和第2页的12个结果,第3页将得到1个结果。 有人能给我推荐一种最简单的方法来预测(或计算)使用PHP使用变量$totalfiles,$limit,$maxpages和$pagenumber在特定页面中的结果数吗??我不认为这4个变量都是必要的 提前谢谢 如果要

我有一个来自
MySQL
query或
Array
或其他内容的搜索结果。结果给出了一个变量
$totalfiles
,例如25。结果数量限制为
$limit
,此处为
12
。计算的最大页数,
$maxpages
,将为
3

当我们考虑该情况时,我们将得到第1页和第2页的12个结果,第3页将得到1个结果。

有人能给我推荐一种最简单的方法来预测(或计算)使用PHP使用变量
$totalfiles
$limit
$maxpages
$pagenumber
在特定页面中的结果数吗??我不认为这4个变量都是必要的


提前谢谢

如果要在最大页数(如您所建议的3页)中均匀分布结果,可以使用:

$results_per_page = ($totalfiles/$maxpages);

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

Max pages:
Total files,除以该限制。如果余数大于0,则添加一个。

$maxpages = $totalfiles/$limit;
if ($totalfiles % $limit > 0) $maxpages++;
当前页面上的页码:
如果页码小于最大页码,则有限制结果。如果页码是最大页数,如果余数大于0,则有(总文件的剩余部分除以限制)结果,否则为限制。

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

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

R=T-((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;
}
函数获取页面上的行数($page,$total\u rows,$per\u page){
$on_page=$total_rows-($page-1)*$per_page);
在页面上返回$on<0?0:$on页面;
}
试试这个:

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
是不需要的,因为它仅用于控制来自数据库的结果。

唯一允许具有不同于$limit的数字的页面是最后一个页面。别忘了。最后一页将始终包含整数除法的剩余部分

$last_page_items = $totafiles % $limit;
如果$last_page_items为0,则表示所有页面都有$limit items

而且

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

特定页面中的总结果不是由$limit控制的吗?这就是我对你写的东西的理解。也许$limit除了“限制每页的输入量”之外还有另一个意思?