pagination - 10 pages per page

前端 未结 3 776
广开言路
广开言路 2020-12-25 07:57

I have a pagination script that displays a list of all pages like so:
prev [1][2][3][4][5][6][7][8][9][10][11][12][13][14] next
But I would like to only

3条回答
  •  挽巷
    挽巷 (楼主)
    2020-12-25 08:51

    I've just been looking for an answer to the same original question, and couldn't find it, so this is what I came up with. I hope someone else finds it useful.

    $totalPages  = 20;
    $currentPage = 1;
    
    if ($totalPages <= 10) {
        $start = 1;
        $end   = $totalPages;
    } else {
        $start = max(1, ($currentPage - 4));
        $end   = min($totalPages, ($currentPage + 5));
    
        if ($start === 1) {
            $end = 10;
        } elseif ($end === $totalPages) {
            $start = ($totalPages - 9);
        }
    }
    
    for ($page = $start; $page <= $end; $page++) {
        echo '[' . $page . ']';
    }
    

    Results:

    $currentPage = 1;  // [1][2][3][4][5][6][7][8][9][10]
    $currentPage = 4;  // [1][2][3][4][5][6][7][8][9][10]
    $currentPage = 10; // [6][7][8][9][10][11][12][13][14][15]
    $currentPage = 17; // [11][12][13][14][15][16][17][18][19][20]
    $currentPage = 20; // [11][12][13][14][15][16][17][18][19][20] 
    

提交回复
热议问题