📜  PHP分页 |设置 3

📅  最后修改于: 2022-05-13 01:56:21.227000             🧑  作者: Mango

PHP分页 |设置 3

在上一篇文章PHP分页 |第 2 组,我们开发了一个简单的分页系统,它在逻辑上是正确的,但由于所有的页码堆叠并占用了大量的屏幕空间,它在视觉上并不吸引人。那么补救措施是什么?当用户查找特定页码时很简单,可以假设他将按顺序移动。例如,如果您在第 12 页,我们可以假设您将转到附近的页面,而不是直接到第 122 页。假设这一点,许多分页系统也在不断发展,并且在视觉上也很吸引人。让我们考虑 GeeksforGeeks 分页系统。下图是一样的。

如您所见,GeeksforGeeks 分页系统要好得多,它可以选择查看总页数。它也有最后一个和下一个按钮,类似地,前一个和第一个按钮也动态呈现,即基于当前页码显示这些按钮的组合。现在,在开始增强我们自己的分页系统之前,我们应该记下我们应该使用哪些功能。

特征分析

  • 首先,我们不想显示 150 个页面,我们只会显示基于当前页码的本地页面集。
  • 我们还应该有一个上一个/下一个和第一个/最后一个按钮来快速导航。
  • 如果你认为,一个用户的动作可以分为三类。顺序、随机和混合。通过创建指向本地页面的链接和下一个/上一个按钮,我们已经处理了顺序运动。对于随机移动,我们应该有一个输入字段,用户可以在其中输入特定的页码,其余的导航链接应该相应地改变。

由于我们已经确定了要添加的功能,让我们跳到最终的源代码并解释我们是如何实现需求的。

最终源代码



  
    ProGeeks Cup 2.0
    
    
    
    
  
  
  
  
    
    
      

ProGeeks Cup 2.0

      

This page is just for demonstration of Basic Pagination using PHP.

                                                                                                                                                                                                                                                 
RankNameCollegeScore
      
      
          $total_pages)?$total_pages-4:(($pn-4<1)?5:$pn));                 $pagLink = "";         if($pn>=2){             echo "
  • <<
  • ";             echo "
  • <
  • ";         }         for ($i=-4; $i<=4; $i++) {           if($k+$i==$pn)             $pagLink .= "
  • ".($k+$i)."
  • ";           else             $pagLink .= "
  • ".($k+$i)."
  • ";           };           echo $pagLink;         if($pn<$total_pages){             echo "
  • >
  • ";             echo "
  • >>
  • ";         }           ?>       
      
      " required>              
     
      
  
     

哇!这太大了,无法理解!不要害怕,我们只包括了那些被突出显示的,还包括一些 CSS 样式、一些新的 HTML 标记和一些逻辑。让我们不要再等待解释我们所做的更改并公布最终结果。

顺序移动代码

这段代码背后的想法非常简单。我们想要一个中间索引 $k 并且我们想要打印相邻页面以创建顺序链接。如果当前页面不是第一页,则在回显序列之前,我们会回显上一页和第一页链接。同样,在回显序列后,如果当前页面不是最后一页,我们会回显下一页和最后一页链接。在这种情况下,我们打算显示构成序列的总共 9 个页面链接。

// K is assumed to be the middle index.
$k = (($pn+4>$total_pages)?$total_pages-4:(($pn-4<1)?5:$pn));     
  
// Show prev and first-page links.
if($pn>=2){
  echo "
  • <<
  • ";   echo "
  • <
  • "; }    // Show sequential links. for ($i=-4; $i<=4; $i++) {   if($k+$i==$pn)     $pagLink .= "
  • ".($k+$i)."
  • ";   else     $pagLink .= "
  • ".($k+$i)."
  • ";   };   echo $pagLink;    // Show next and last-page links. if($pn<$total_pages){   echo "
  • >
  • ";   echo "
  • >>
  • "; }

    随机运动代码

    这背后的想法也很简单,我们将提供一个输入字段,用户可以在其中输入任何数值,然后我们将检查给定值是否有效,然后我们将转到页面。这不需要太多的PHP ,因为它可以使用 JS 完成。 PHP仅用于为我们提供 $total_pages 的值等。为了开发上述功能,我们首先添加了以下标记,然后添加了处理点击事件的函数。

      " required>   
    function go2Page()
    {
        var pn = document.getElementById("pn").value;
        // Check if pn is between the max and min.
      pn = ((pn>)?:((pn<1)?1:pn));
      window.location.href = 'index.php?page=' + pn;
    }
    

    其余的更新只是一些 CSS 让它看起来有点规则。最后,我们得到的最终结果如下图所示。

    我非常高兴地创建了这个分页系统,并且很高兴结果证明它很不错。如果您需要源文件和数据集,请随时访问我的存储库。快乐学习。