Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/247.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 分页,用于循环_Php_Pagination - Fatal编程技术网

Php 分页,用于循环

Php 分页,用于循环,php,pagination,Php,Pagination,我正在尝试做一个分页,在那里我可以限制它在导航中显示多少数字,所以它会是这样的 我现在的脚本在我读到最后几页之前一直运行良好。假设我将导航中允许的最大数量设置为4,页面数量设置为9。然后它将工作到第7页,但从第7页开始,它将开始缩小数字,而不是将它们放在当前页码的前面。它的行为将是这样的 1)){ //检查页面数是否大于导航中允许的最大值,以及页面数是否不等于2 如果($num_pages>$max_nav_pages)&&($page_number!==2)){ 回声“; 回声“>>”; 打

我正在尝试做一个分页,在那里我可以限制它在导航中显示多少数字,所以它会是这样的

<1。。。[3] 4 5 ... 9>

我现在的脚本在我读到最后几页之前一直运行良好。假设我将导航中允许的最大数量设置为4,页面数量设置为9。然后它将工作到第7页,但从第7页开始,它将开始缩小数字,而不是将它们放在当前页码的前面。它的行为将是这样的

<1。。。[7] 8.9

<1。。。[8] 九,

当我到达最后一页时,导航将只显示

<1。。。九,

我希望它看起来像这样

<1。。。6[7]8 9>

<1。。。6 7[8]9>

<1。。。6 7 8[9]

我已经试着让它工作了好几个小时了,但是有点卡住了。有什么建议吗

 // Method to output the pagination
 function output_pagination($max_per_page, $table) {

    $page_number = $this->valid_page_number($this->get_page_number(), $table); // Get current page number
    $num_pages = $this->count_table_rows($table) / $max_per_page; // Set the number of pages
    $max_nav_pages = 4; // Max numbers of pages in the page navigation
    $start = $page_number-1; // Value to start the loop on

    // Set start to 1 if it equals 0
    if($start === 0) {
        $start = 1;
    }

    // Keep loop going until $i no longer is greater or equal to number of pages
    for($i = $start; $i <= $num_pages; $i++) {

        // Output prev arrow + '...' + 1 if its the start of the pagination and page number not equals 1 ($i = 1 and page number is > $i)
        if(($i === $start) && ($page_number > 1)) {

            // Check if number of pages are greater then max allowed in navigation and if page number not equals 2
            if(($num_pages > $max_nav_pages) && ($page_number !== 2)) {

                echo "<< ";
                echo "< ";
                echo "1 ";
                echo " ... ";
                $i = $page_number - 1;

            } else {

                echo "<< ";
                echo "< ";
                echo $i;

            }

        }

        // Output current page in bold text if $i equals or are greater then $start and page number equals $i
        else if (($i >= $start) && ($page_number === $i)) {

            echo " <b>[".$i."]</b> ";

        }

        // Output "...", last page number and next page arrow. if we have 10 pages or more. Then break the loop. We are done.
        else if($i === $start + $max_nav_pages) {

            // Check if page number equals number of pages - max allowed nav pages + 1
            if($page_number === $num_pages-$max_nav_pages+1) {

                echo $i;
                echo " >";
                echo " >>";
                break;

            } else {
                echo " ... ";
                echo $num_pages;
                echo " >";
                echo " >>";
                break;
            }

        }

        // Output next page number if $i is greater then $start and $i + 1 is equal or greater then number of total pages
        else if(($i > $start) && ($i + 1 <= $num_pages)) {

            echo " ".$i." ";

        }

        else { // Output last page number and next page arrow. We are done.

            echo $i;
            echo " >";
            echo " >>";

        }
    }

}
//输出分页的方法
函数输出分页($max_/页,$table){
$page_number=$this->valid_page_number($this->get_page_number(),$table);//获取当前页码
$num\u pages=$this->count\u table\u rows($table)/$max\u per\u page;//设置页数
$max_nav_pages=4;//页面导航中的最大页数
$start=$page_number-1;//用于启动循环的值
//如果start等于0,则将其设置为1
如果($start==0){
$start=1;
}
//继续循环,直到$i不再大于或等于页数
对于($i=$start;$i$i)
如果($i===$start)&($page_number>1)){
//检查页面数是否大于导航中允许的最大值,以及页面数是否不等于2
如果($num_pages>$max_nav_pages)&&($page_number!==2)){
回声“;
回声“>>”;
打破
}否则{
回声“…”;
echo$num_页面;
回声“>”;
回声“>>”;
打破
}
}
//如果$i大于$start且$i+1等于或大于总页数,则输出下一页码

如果($i>$start)和($i+1假设您在第8页,那么循环总是从$page_number-1开始,它将是7,这意味着永远不会显示6。您需要从$page_number-$max_nav_pages开始循环,并确定哪些数字应该以这种方式显示。

如果您想显示一个表,我强烈推荐这个很棒的jQuery plugin。它内置了分页功能。谢谢!我在更改了它之后使它工作了,并根据它生成了数字:)当然,没问题。