我想显示分页数据,例如显示16中的1-5。我正在尝试如下
$nb_elem_per_page = 3;
$page = isset($_GET['pg'])?intval($_GET['pg']):0;
$data = $aawp_table['products'] ;
$number_of_pages = ceil(count($data)/$nb_elem_per_page);
$offset = ($page - 1) * $nb_elem_per_page;
Displaying <?php echo $offset .' - '.$nb_elem_per_page .' of ' . count($data); ?>
但是我没有得到适当的结果
您可能将$offset
if设为负值($page - 1)
。
您可以删除它,它将起作用。
代码:
$nb_data = 20;
$nb_elem_per_page = 3;
$page = isset($_GET['pg']) ? intval($_GET['pg']) : 0;
$number_of_pages = ceil($nb_data / $nb_elem_per_page);
$offset = $page * $nb_elem_per_page;
echo $offset .' - ' . $nb_elem_per_page .' of ' . $nb_data;
pg
未定义,结果将是0 - 3 of 20
pg
为0,结果将为0 - 3 of 20
pg
为1,结果将为3 - 3 of 20
请注意,您应该测试是否$page
小于$number_of_pages
,以免走得太远或小于0。
编辑更完整的代码:
function run_pager($pg = null)
{
$nb_data = 20;
$nb_elem_per_page = 3;
$number_of_pages = ceil($nb_data / $nb_elem_per_page);
$page = isset($pg) ? intval($pg) : 0;
if ($page < 0) $page = 0;
if ($page >= $number_of_pages) $page = $number_of_pages - 1;
$offset = $page * $nb_elem_per_page;
$end = $offset + $nb_elem_per_page;
if ($end > $nb_data) $end = $nb_data;
return ($offset + 1) .' - ' . ($end) .' of ' . $nb_data;
}
for ($i=0;$i<10;$i++) {
echo "i=$i : " . run_pager($i) . PHP_EOL;
}
输出:
i=0 : 1 - 3 of 20
i=1 : 4 - 6 of 20
i=2 : 7 - 9 of 20
i=3 : 10 - 12 of 20
i=4 : 13 - 15 of 20
i=5 : 16 - 18 of 20
i=6 : 19 - 20 of 20
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句