Displaying 1-5 of 16과 같은 페이징 데이터를 표시하고 싶습니다. 나는 이것을 아래와 같이 시도하고있다
$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
먼 곳으로 이동하는 것을 피하는 것보다 낮거나 0보다 $page
낮은 지 테스트해야합니다 $number_of_pages
.
더 완전한 코드 편집 :
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] 삭제
몇 마디 만하겠습니다