paging like stackoverflow's

前端 未结 3 1850
一整个雨季
一整个雨季 2021-02-11 05:24

i\'m a newbie in php especially on making pagination.

my question is, how to make paging like stackoverflow\'s pagination?
i mean paging like this :

1

3条回答
  •  余生分开走
    2021-02-11 05:46

    This will generate the numbers as per above with current = 7, pages = 25. Replace the numbers with links to get an actual pagination index.

    $current = 7;
    $pages = 25;
    $links = array();
    
    if ($pages > 3) {
        // this specifies the range of pages we want to show in the middle
        $min = max($current - 2, 2);
        $max = min($current + 2, $pages-1);
    
        // we always show the first page
        $links[] = "1";
    
        // we're more than one space away from the beginning, so we need a separator
        if ($min > 2) {
            $links[] = "...";
        }
    
        // generate the middle numbers
        for ($i=$min; $i<$max+1; $i++) {
            $links[] = "$i";
        }
    
        // we're more than one space away from the end, so we need a separator
        if ($max < $pages-1) {
            $links[] = "...";
        }
        // we always show the last page
        $links[] = "$pages";
    } else {
        // we must special-case three or less, because the above logic won't work
        $links = array("1", "2", "3");
    }
    echo implode(" ", $links);
    

    Output:

    1 ... 5 6 7 8 9 ... 25
    

提交回复
热议问题