Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/283.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/13.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,我有一个分页代码: //pagination $result1=$mysqli->query("SELECT * FROM product"); $row_per_page=10 ; $rows=$result1->num_rows; if ($rows>$row_per_page) $page=ceil($rows/$row_per_page); else $page=1; if(isset($_GET['start']) && (int)$_GET['

我有一个分页代码:

//pagination

$result1=$mysqli->query("SELECT * FROM product");
$row_per_page=10 ; 
$rows=$result1->num_rows;
if ($rows>$row_per_page) $page=ceil($rows/$row_per_page);
else $page=1; 
if(isset($_GET['start']) && (int)$_GET['start'])
    $start=$_GET['start']; 
else 
    $start=0;
$result=$mysqli->query("SELECT * FROM product limit $start,$row_per_page"); 

//End pagination

while ($rows = $result->fetch_assoc()) { 
   echo $rows['name'];
}

$page_cr=($start/$row_per_page)+1;
for($i=1;$i<=$page;$i++)
{
     if ($page_cr!=$i) echo "<div class='pagination'>"."<a href='index.php?go=product&start=".$row_per_page*($i-1)."'>$i&nbsp;</a>"."</div>";
     else echo "<div class='pagination'>".$i." "."</div>";
}
//分页
$result1=$mysqli->query(“从产品中选择*);
$row_/页=10;
$rows=$result1->num\u行;
如果($rows>$row\ U per\ U page)$page=ceil($rows/$row\ U per\ page);
否则$page=1;
if(isset($\u GET['start'])和(&(int)$\u GET['start']))
$start=$_GET['start'];
其他的
$start=0;
$result=$mysqli->query(“选择*来自产品限制$start,$row\u每页”);
//结束分页
而($rows=$result->fetch_assoc()){
echo$rows['name'];
}
$page_cr=(每页$start/$row_)+1;

对于($i=1;$i这里有一个解决您的分页问题的解决方案,Google用来对搜索结果分页的解决方案。基本上,这个解决方案的思想是:

在任何时候,最多会显示5个分页链接,即从当前页面的角度来看,显示两个前置页面和后续页面。让我用两个场景来解释这一点

案例(1):当页数等于或小于5页时(假设我们有4页)

在这种情况下,我们必须显示所有分页链接,没有任何前面或后面的点,如下所示:

// User is on page 1
1 2 3 4
  - - -

// User is on page 3
1 2 3 4
- -   -

// User is on page 4
1 2 3 4 
- - - 
// User is on page 1
1 2 3 4 5 ...
  - - - -

// User is on page 5
... 3 4 5 6 7 ...
    - -   - -

// User is on page 10
... 6 7 8 9 10
    - - - - 
// Display all page links
for($i = 1; $i <= $page; $i++){
    if($page_cr != $i){
        echo "<div class='pagination'>"."<a href='index.php?go=product&start=".$row_per_page*($i-1)."'>$i&nbsp;</a>"."</div>"; 
    }else{
        echo "<div class='pagination'>".$i." "."</div>";
    }
}
案例(2):当页数大于5页时(假设我们有10页)

在这种情况下,我们必须相应地显示分页链接和点,如下所示:

// User is on page 1
1 2 3 4
  - - -

// User is on page 3
1 2 3 4
- -   -

// User is on page 4
1 2 3 4 
- - - 
// User is on page 1
1 2 3 4 5 ...
  - - - -

// User is on page 5
... 3 4 5 6 7 ...
    - -   - -

// User is on page 10
... 6 7 8 9 10
    - - - - 
// Display all page links
for($i = 1; $i <= $page; $i++){
    if($page_cr != $i){
        echo "<div class='pagination'>"."<a href='index.php?go=product&start=".$row_per_page*($i-1)."'>$i&nbsp;</a>"."</div>"; 
    }else{
        echo "<div class='pagination'>".$i." "."</div>";
    }
}
因此,使用
$page\u cr=($start/$row\u per\u page)+1;获取当前页码后,此自定义分页系统的算法如下所示:

// User is on page 1
1 2 3 4
  - - -

// User is on page 3
1 2 3 4
- -   -

// User is on page 4
1 2 3 4 
- - - 
// User is on page 1
1 2 3 4 5 ...
  - - - -

// User is on page 5
... 3 4 5 6 7 ...
    - -   - -

// User is on page 10
... 6 7 8 9 10
    - - - - 
// Display all page links
for($i = 1; $i <= $page; $i++){
    if($page_cr != $i){
        echo "<div class='pagination'>"."<a href='index.php?go=product&start=".$row_per_page*($i-1)."'>$i&nbsp;</a>"."</div>"; 
    }else{
        echo "<div class='pagination'>".$i." "."</div>";
    }
}
  • 检查页数是否大于5。如果大于5,则转到步骤2,否则转到步骤5

  • 查找页面的超集范围,如1-10或1-20等。例如,如果
    $page=10
    ,则此超集范围将为1-10。此步骤的代码如下:

    // Superset range of pages
    $superset_range = range(1, $page);
    
    // Subset range of pages to display
    $subset_range = range($page_cr - 2, $page_cr + 2);
    
    // Adjust the range
    foreach($subset_range as $p){
        if($p <= 0){
            array_shift($subset_range);
            $subset_range[] = $subset_range[count($subset_range) - 1] + 1;
        }elseif($p > $page){
            array_pop($subset_range);
            array_unshift($subset_range, $subset_range[0] - 1);
        }
    }
    
    // Display pagination links and dots
    if($subset_range[0] > $superset_range[0]){
        echo "<div class='pagination'>...&nbsp;</div>";
    }
    foreach($subset_range as $p){
        if($page_cr != $p){
            echo "<div class='pagination'>"."<a href='index.php?go=product&start=".$row_per_page*($p-1)."'>$p&nbsp;</a>"."</div>"; 
        }else{
            echo "<div class='pagination'>".$p." "."</div>";
        }
    
    }
    if($subset_range[count($subset_range) - 1] < $superset_range[count($superset_range) - 1]){
        echo "<div class='pagination'>&nbsp;...</div>";
    }
    
  • 查找要显示的页面的子集范围,如1-5或3-7等。例如,如果
    $page=10
    ,则此子集范围将是1-5、3-7或6-10等,它可以是1到10之间的任何连续五页。此外,必要时调整此范围。此步骤的代码如下:

    // Superset range of pages
    $superset_range = range(1, $page);
    
    // Subset range of pages to display
    $subset_range = range($page_cr - 2, $page_cr + 2);
    
    // Adjust the range
    foreach($subset_range as $p){
        if($p <= 0){
            array_shift($subset_range);
            $subset_range[] = $subset_range[count($subset_range) - 1] + 1;
        }elseif($p > $page){
            array_pop($subset_range);
            array_unshift($subset_range, $subset_range[0] - 1);
        }
    }
    
    // Display pagination links and dots
    if($subset_range[0] > $superset_range[0]){
        echo "<div class='pagination'>...&nbsp;</div>";
    }
    foreach($subset_range as $p){
        if($page_cr != $p){
            echo "<div class='pagination'>"."<a href='index.php?go=product&start=".$row_per_page*($p-1)."'>$p&nbsp;</a>"."</div>"; 
        }else{
            echo "<div class='pagination'>".$p." "."</div>";
        }
    
    }
    if($subset_range[count($subset_range) - 1] < $superset_range[count($superset_range) - 1]){
        echo "<div class='pagination'>&nbsp;...</div>";
    }
    
    //要显示的页面的子集范围
    $subset_range=范围($page_cr-2,$page_cr+2);
    //调整范围
    foreach($p){
    如果($p$页){
    数组\u pop($subset\u range);
    数组\u unshift($subset\u range,$subset\u range[0]-1);
    }
    }
    
  • 相应地显示分页链接和点。此步骤的代码如下:

    // Superset range of pages
    $superset_range = range(1, $page);
    
    // Subset range of pages to display
    $subset_range = range($page_cr - 2, $page_cr + 2);
    
    // Adjust the range
    foreach($subset_range as $p){
        if($p <= 0){
            array_shift($subset_range);
            $subset_range[] = $subset_range[count($subset_range) - 1] + 1;
        }elseif($p > $page){
            array_pop($subset_range);
            array_unshift($subset_range, $subset_range[0] - 1);
        }
    }
    
    // Display pagination links and dots
    if($subset_range[0] > $superset_range[0]){
        echo "<div class='pagination'>...&nbsp;</div>";
    }
    foreach($subset_range as $p){
        if($page_cr != $p){
            echo "<div class='pagination'>"."<a href='index.php?go=product&start=".$row_per_page*($p-1)."'>$p&nbsp;</a>"."</div>"; 
        }else{
            echo "<div class='pagination'>".$p." "."</div>";
        }
    
    }
    if($subset_range[count($subset_range) - 1] < $superset_range[count($superset_range) - 1]){
        echo "<div class='pagination'>&nbsp;...</div>";
    }
    
    //显示分页链接和点
    如果($subset\u range[0]>$superset\u range[0]){
    回声“…”;
    }
    foreach($p){
    如果($page_cr!=$p){
    回声“.”;
    }否则{
    回显“$p.”;
    }
    }
    if($subset\u range[计数($subset\u range)-1]<$superset\u range[计数($superset\u range)-1]){
    回声“…”;
    }
    
  • 使用旧代码显示所有分页链接,如下所示:

    // User is on page 1
    1 2 3 4
      - - -
    
    // User is on page 3
    1 2 3 4
    - -   -
    
    // User is on page 4
    1 2 3 4 
    - - - 
    
    // User is on page 1
    1 2 3 4 5 ...
      - - - -
    
    // User is on page 5
    ... 3 4 5 6 7 ...
        - -   - -
    
    // User is on page 10
    ... 6 7 8 9 10
        - - - - 
    
    // Display all page links
    for($i = 1; $i <= $page; $i++){
        if($page_cr != $i){
            echo "<div class='pagination'>"."<a href='index.php?go=product&start=".$row_per_page*($i-1)."'>$i&nbsp;</a>"."</div>"; 
        }else{
            echo "<div class='pagination'>".$i." "."</div>";
        }
    }
    
    //显示所有页面链接
    对于($i=1;$i$superset\u范围[0]){
    回声“…”;
    }
    foreach($p){
    如果($page_cr!=$p){
    回声“.”;
    }否则{
    回显“$p.”;
    }
    }
    if($subset\u range[计数($subset\u range)-1]<$superset\u range[计数($superset\u range)-1]){
    回声“…”;
    }
    }否则{
    //显示所有页面链接
    
    对于($i=1;$i这里有一个解决您的分页问题的解决方案,Google用来对搜索结果分页的解决方案。基本上,这个解决方案的思想是:

    在任何时候,最多会显示5个分页链接,即从当前页面的角度来看,显示两个前置页面和后续页面。让我用两个场景来解释这一点

    案例(1):当页数等于或小于5页时(假设我们有4页)

    在这种情况下,我们必须显示所有分页链接,没有任何前面或后面的点,如下所示:

    // User is on page 1
    1 2 3 4
      - - -
    
    // User is on page 3
    1 2 3 4
    - -   -
    
    // User is on page 4
    1 2 3 4 
    - - - 
    
    // User is on page 1
    1 2 3 4 5 ...
      - - - -
    
    // User is on page 5
    ... 3 4 5 6 7 ...
        - -   - -
    
    // User is on page 10
    ... 6 7 8 9 10
        - - - - 
    
    // Display all page links
    for($i = 1; $i <= $page; $i++){
        if($page_cr != $i){
            echo "<div class='pagination'>"."<a href='index.php?go=product&start=".$row_per_page*($i-1)."'>$i&nbsp;</a>"."</div>"; 
        }else{
            echo "<div class='pagination'>".$i." "."</div>";
        }
    }
    
    案例(2):当页数大于5页时(假设我们有10页)

    在这种情况下,我们必须相应地显示分页链接和点,如下所示:

    // User is on page 1
    1 2 3 4
      - - -
    
    // User is on page 3
    1 2 3 4
    - -   -
    
    // User is on page 4
    1 2 3 4 
    - - - 
    
    // User is on page 1
    1 2 3 4 5 ...
      - - - -
    
    // User is on page 5
    ... 3 4 5 6 7 ...
        - -   - -
    
    // User is on page 10
    ... 6 7 8 9 10
        - - - - 
    
    // Display all page links
    for($i = 1; $i <= $page; $i++){
        if($page_cr != $i){
            echo "<div class='pagination'>"."<a href='index.php?go=product&start=".$row_per_page*($i-1)."'>$i&nbsp;</a>"."</div>"; 
        }else{
            echo "<div class='pagination'>".$i." "."</div>";
        }
    }
    
    因此,使用
    $page\u cr=($start/$row\u per\u page)+1;获取当前页码后,此自定义分页系统的算法如下所示:

    // User is on page 1
    1 2 3 4
      - - -
    
    // User is on page 3
    1 2 3 4
    - -   -
    
    // User is on page 4
    1 2 3 4 
    - - - 
    
    // User is on page 1
    1 2 3 4 5 ...
      - - - -
    
    // User is on page 5
    ... 3 4 5 6 7 ...
        - -   - -
    
    // User is on page 10
    ... 6 7 8 9 10
        - - - - 
    
    // Display all page links
    for($i = 1; $i <= $page; $i++){
        if($page_cr != $i){
            echo "<div class='pagination'>"."<a href='index.php?go=product&start=".$row_per_page*($i-1)."'>$i&nbsp;</a>"."</div>"; 
        }else{
            echo "<div class='pagination'>".$i." "."</div>";
        }
    }
    
  • 检查页数是否大于5。如果大于5,则转到步骤2,否则转到步骤5

  • 查找页面的超集范围,如1-10或1-20等。例如,如果
    $page=10
    ,则此超集范围将为1-10。此步骤的代码如下:

    // Superset range of pages
    $superset_range = range(1, $page);
    
    // Subset range of pages to display
    $subset_range = range($page_cr - 2, $page_cr + 2);
    
    // Adjust the range
    foreach($subset_range as $p){
        if($p <= 0){
            array_shift($subset_range);
            $subset_range[] = $subset_range[count($subset_range) - 1] + 1;
        }elseif($p > $page){
            array_pop($subset_range);
            array_unshift($subset_range, $subset_range[0] - 1);
        }
    }
    
    // Display pagination links and dots
    if($subset_range[0] > $superset_range[0]){
        echo "<div class='pagination'>...&nbsp;</div>";
    }
    foreach($subset_range as $p){
        if($page_cr != $p){
            echo "<div class='pagination'>"."<a href='index.php?go=product&start=".$row_per_page*($p-1)."'>$p&nbsp;</a>"."</div>"; 
        }else{
            echo "<div class='pagination'>".$p." "."</div>";
        }
    
    }
    if($subset_range[count($subset_range) - 1] < $superset_range[count($superset_range) - 1]){
        echo "<div class='pagination'>&nbsp;...</div>";
    }
    
  • 查找要显示的页面的子集范围,如1-5或3-7等。例如,如果
    $page=10
    ,则此子集范围将是1-5、3-7或6-10等,它可以是1到10之间的任何连续五页。此外,必要时调整此范围。此步骤的代码如下:

    // Superset range of pages
    $superset_range = range(1, $page);
    
    // Subset range of pages to display
    $subset_range = range($page_cr - 2, $page_cr + 2);
    
    // Adjust the range
    foreach($subset_range as $p){
        if($p <= 0){
            array_shift($subset_range);
            $subset_range[] = $subset_range[count($subset_range) - 1] + 1;
        }elseif($p > $page){
            array_pop($subset_range);
            array_unshift($subset_range, $subset_range[0] - 1);
        }
    }
    
    // Display pagination links and dots
    if($subset_range[0] > $superset_range[0]){
        echo "<div class='pagination'>...&nbsp;</div>";
    }
    foreach($subset_range as $p){
        if($page_cr != $p){
            echo "<div class='pagination'>"."<a href='index.php?go=product&start=".$row_per_page*($p-1)."'>$p&nbsp;</a>"."</div>"; 
        }else{
            echo "<div class='pagination'>".$p." "."</div>";
        }
    
    }
    if($subset_range[count($subset_range) - 1] < $superset_range[count($superset_range) - 1]){
        echo "<div class='pagination'>&nbsp;...</div>";
    }
    
    //要显示的页面的子集范围
    $subset_range=范围($page_cr-2,$page_cr+2);
    //调整范围
    foreach($p){
    如果($p$页){
    数组\u pop($subset\u range);
    数组\u unshift($subset\u range,$subset\u range[0]-1);
    }
    }
    
  • 相应地显示分页链接和点。此步骤的代码如下:

    // Superset range of pages
    $superset_range = range(1, $page);
    
    // Subset range of pages to display
    $subset_range = range($page_cr - 2, $page_cr + 2);
    
    // Adjust the range
    foreach($subset_range as $p){
        if($p <= 0){
            array_shift($subset_range);
            $subset_range[] = $subset_range[count($subset_range) - 1] + 1;
        }elseif($p > $page){
            array_pop($subset_range);
            array_unshift($subset_range, $subset_range[0] - 1);
        }
    }
    
    // Display pagination links and dots
    if($subset_range[0] > $superset_range[0]){
        echo "<div class='pagination'>...&nbsp;</div>";
    }
    foreach($subset_range as $p){
        if($page_cr != $p){
            echo "<div class='pagination'>"."<a href='index.php?go=product&start=".$row_per_page*($p-1)."'>$p&nbsp;</a>"."</div>"; 
        }else{
            echo "<div class='pagination'>".$p." "."</div>";
        }
    
    }
    if($subset_range[count($subset_range) - 1] < $superset_range[count($superset_range) - 1]){
        echo "<div class='pagination'>&nbsp;...</div>";
    }
    
    //显示分页链接和点
    如果($subset\u range[0]>$superset\u range[0]){
    回声“…”;
    }
    foreach($p){
    如果($page_cr!=$p){
    回声“.”;
    }否则{
    回显“$p.”;
    }
    }
    if($subset\u range[计数($subset\u range)-1]<$superset\u range[计数($superset\u range)-1]){
    回声“…”;
    }
    
  • 使用旧代码显示所有分页链接,如下所示:

    // User is on page 1
    1 2 3 4
      - - -
    
    // User is on page 3
    1 2 3 4
    - -   -
    
    // User is on page 4
    1 2 3 4 
    - - - 
    
    // User is on page 1
    1 2 3 4 5 ...
      - - - -
    
    // User is on page 5
    ... 3 4 5 6 7 ...
        - -   - -
    
    // User is on page 10
    ... 6 7 8 9 10
        - - - - 
    
    // Display all page links
    for($i = 1; $i <= $page; $i++){
        if($page_cr != $i){
            echo "<div class='pagination'>"."<a href='index.php?go=product&start=".$row_per_page*($i-1)."'>$i&nbsp;</a>"."</div>"; 
        }else{
            echo "<div class='pagination'>".$i." "."</div>";
        }
    }
    
    //显示所有页面链接
    对于($i=1;$i$superset\u范围[0]){
    回声“…”;
    }
    foreach($p){
    如果($page\u cr=