Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/266.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,我有一个PHP分页脚本。当页面记录为数百条时,分页结果太大。如何限制页码/链接 例如: 这是我的PHP脚本 <?php $ppp = 10; $rows = mysql_num_rows($query); $nmpages = ceil($rows/$ppp); // if current page is not 1, draw PREVIOUS link if ($pg > 1 && $nmpages != 0) { echo "<a href=\"?

我有一个PHP分页脚本。当页面记录为数百条时,分页结果太大。如何限制页码/链接

例如:<1 | 2。。。37 | 38 | 39 | 40 | 41 | 42 ... 82 | 83>

这是我的PHP脚本

<?php
$ppp = 10;
$rows = mysql_num_rows($query);

$nmpages = ceil($rows/$ppp);

// if current page is not 1, draw PREVIOUS link
if ($pg > 1 && $nmpages != 0) {
  echo "<a href=\"?pg=".($pg-1)."\">&lt;</a> ";
}

For($i = 1 ; $i <= $nmpages ; $i++) {
    If($i == $pg) {
      echo "<a href=\"#\" class=\"selected\"><b>".$i."</b></a> ";
   } else {
      echo "<a href=\"?pg=".$i."\">".$i."</a> ";
    }
}
// if current page less than max pages, draw NEXT link
if ($pg < $nmpages && $nmpages != 0) {
  echo "<a href=\"?pg=".($pg+1)."\">&gt;</a>";
}
?>

你知道我如何使用我拥有的特定PHP脚本做到这一点吗?

的答案基本上是访问一个包含代码示例的页面


这就是答案,但这个问题基本上是重复的。

尝试使一个页面括号(例如10)比实际页面小,10比实际页面大,例如更改for语句:

For($i = $pg-10 ; $i <= $pg+10 ; $i++)
对于($i=$pg-10;$i请尝试以下方法:

    <?php
        $link = "";
 $page = $_GET['pg']; // your current page
 // $pages=20; // Total number of pages

  $limit=5  ; // May be what you are looking for

    if ($pages >=1 && $page <= $pages)
    {
        $counter = 1;
        $link = "";
        if ($page > ($limit/2))
           { $link .= "<a href=\"?page=1\">1 </a> ... ";}
        for ($x=$page; $x<=$pages;$x++)
        {

            if($counter < $limit)
                $link .= "<a href=\"?page=" .$x."\">".$x." </a>";

            $counter++;
        }
        if ($page < $pages - ($limit/2))
         { $link .= "... " . "<a href=\"?page=" .$pages."\">".$pages." </a>"; }
    }

    echo $link;
?>

基于@Makesh代码的改进或重写

function get_pagination_links($current_page, $total_pages, $url)
{
    $links = "";
    if ($total_pages >= 1 && $current_page <= $total_pages) {
        $links .= "<a href=\"{$url}?page=1\">1</a>";
        $i = max(2, $current_page - 5);
        if ($i > 2)
            $links .= " ... ";
        for (; $i < min($current_page + 6, $total_pages); $i++) {
            $links .= "<a href=\"{$url}?page={$i}\">{$i}</a>";
        }
        if ($i != $total_pages)
            $links .= " ... ";
        $links .= "<a href=\"{$url}?page={$total_pages}\">{$total_pages}</a>";
    }
    return $links;
}

我想通过当前页面和总页面得到一组数字。这就是我的想法。我希望这能帮助其他人-

注意-如果总页数超过10,则此项工作。我觉得如果总页数 页面小于10,则仅在单个for循环中显示它

函数getSmartPageNumber($currentPage,$totalPage) { $PageNumber=[]; $diff=2; $firstChunk=[1,2,3]; $lastChunk=[$totalPage-2,$totalPage-1,$totalPage]; 如果($currentPage<$totalPage){ $loopStartAt=$currentPage-$diff; 如果($loopStartAt<1){ $loopStartAt=1; } $loopEndAt=$loopStartAt+($diff*2); 如果($loopEndAt>$totalPage){ $loopEndAt=$totalPage; $loopStartAt=$loopEndAt-($diff*2); } if(!in_数组($loopStartAt,$firstChunk)){ foreach($firstChunk作为$i){ $PageNumber[]=$i; } $pageNumbers[]='; }
有关($i=$loopStartAt;$i可能的副本,请参阅此[问题][1][1]:可能这就是你的答案。你需要知道两件事:你在哪一页以及总共有多少页。分而治之;将问题分解成更小的问题,这样会更容易解决。Digg风格的分页是一个很好的例子,可以很容易地在自定义分页脚本中使用这是非常可读的代码。。
function get_pagination_links($current_page, $total_pages, $url)
{
    $links = "";
    if ($total_pages >= 1 && $current_page <= $total_pages) {
        $links .= "<a href=\"{$url}?page=1\">1</a>";
        $i = max(2, $current_page - 5);
        if ($i > 2)
            $links .= " ... ";
        for (; $i < min($current_page + 6, $total_pages); $i++) {
            $links .= "<a href=\"{$url}?page={$i}\">{$i}</a>";
        }
        if ($i != $total_pages)
            $links .= " ... ";
        $links .= "<a href=\"{$url}?page={$total_pages}\">{$total_pages}</a>";
    }
    return $links;
}
page = 1
1 2 3 4 5 6 ... 20 

page = 10
1 ... 5 6 7 8 9 10 11 12 13 14 15 ... 20 

page = 19
1 ... 14 15 16 17 18 19 20 
Array
(
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => .
    [4] => 6
    [5] => 7
    [6] => 8
    [7] => 9
    [8] => 10
    [9] => .
    [10] => 18
    [11] => 19
    [12] => 20
)
Array
(
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => 4
    [4] => 5
    [5] => .
    [6] => 18
    [7] => 19
    [8] => 20
)