📜  PHP分页 |设置 2

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

PHP分页 |设置 2

在上一篇关于PHP分页的文章中,我们已经了解了为什么需要分页,并且还开发了使用PHP实现分页系统的基本结构。接下来,让我们从我们的开发过程开始,首先创建一个脚本来连接到我们的数据库。

连接到数据库

连接到数据库通常是在任何PHP文件中显示数据的必要任务,因此重复编写相同的代码并不是最好的方法,因此按照惯例,我们将创建一个名为“connection.xml”的PHP文件。 PHP”,并会编写如下代码。


在本文中,我们将使用 mysql 扩展,如果您想使用 mysqli 扩展,请参考以下文章。上面的代码片段只是将主机、用户名、密码和数据库名称等凭据定义为PHP常量,并使用它们来建立连接。现在我们必须获取数据并将其分发到页面中。

数据获取和表示

到目前为止,我们已经创建了一个演示标记,我们已经创建了数据库表来保存假数据,并且我们还连接到了数据库。现在剩下的就是获取信息行并将其显示在各个页面上。现在,它背后的一般逻辑可能是什么。分页通常限制页面中条目的数量,并且还维护整个页面中所有条目的顺序。因此,如果我们可以有一个变量来表示我们可以在页面上显示的最大条目数并给出页码,我们可以准确地找到要显示的条目。例如,如果当前页码为 5,限制为 10,那么我们可以手动查看第一页将包含 1-10,第二页将包含 11-20,同样,第五页将包含 41-50条目。
所以我们可以这样写,如果页码用$pn表示,limit 用$limit表示,那么条目的起始索引可以写成: (($pn-1)*$limit)+1 。由于我们已经计算了关系,我们现在需要在“index.html”中实现以下内容。 PHP”文件。以下是我们最终应该得到的。



  
    ProGeeks Cup 2.0
    
    
    
  
  
  
  
    
    
      

ProGeeks Cup 2.0

      

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

                                                                                                                                                                                                                                                 
RankNameCollegeScore
           
  
  

如您所见,我们在之前编写的代码中添加了三个部分(突出显示的部分)来获取和显示数据以及指向下一页的链接。让我们分别浏览所有这些部分,以深入了解代码。

从数据库中获取

// Import the file where we defined the connection to Database.  
require_once "connection.php";
   
$limit = 10;  // Number of entries to show in a page.
// Look for a GET variable page if not found default is 1.  
if (isset($_GET["page"])) { 
    $pn  = $_GET["page"]; 
} 
else { 
    $pn=1; 
};  
   
$start_from = ($pn-1) * $limit;  
   
$sql = "SELECT * FROM table1 LIMIT $start_from, $limit";  
$rs_result = mysql_query ($sql); 

在我们在“connection. PHP”我们将使用 require_once 关键字导入文件。接下来,我们明确定义要在单个页面中显示的最大记录数。随后,我们检查URL中是否有任何“page”属性,即我们在“GET”方法中查找“page”属性,如果找到则设置为要显示的页码,否则为第一个page 或值为 1。在此之后,我们正在计算开始获取的索引,它是使用我们之前导出的公式计算的,但是由于 SQL 使用 0 索引,我们不会添加额外的 1。最后,我们只是获取每个记录的字段,从索引 $start_from 开始,最多限制为 $limit 个记录并存储在 $rs_result 变量中。

显示记录

  
    
      
    
    
                                           
    

本节相当简单,我们只是迭代我们获取的记录并将每一行作为关联数组获取,我们将每个字段作为表数据(td 标签)在每个表行(tr 标签)中回显。每次迭代后,我们都会创建一个包含四列的表格行,即 Rank、Name、College 和 Score。

显示页面导航

$sql = "SELECT COUNT(*) FROM table1";  
$rs_result = mysql_query($sql);  
$row = mysql_fetch_row($rs_result);  
$total_records = $row[0];  
// Number of pages required.
$total_pages = ceil($total_records / $limit);  
$pagLink = "";                      
for ($i=1; $i<=$total_pages; $i++) {
  if($i==$pn) 
    $pagLink .= "
  • ".$i."
  • ";   else     $pagLink .= "
  •                                         ".$i."
  • ";   };   echo $pagLink;

    这是我们需要开发导航链接以帮助用户转到不同页面的最后一部分。要做到这一点,我们首先需要知道我们的内容分布在多少页中。在上面的代码中,我们首先获取总记录数,在此示例中为 1500。接下来,我们计算总记录除以限制的上限,该限制为我们提供所需的页数。最后,我们只是简单地迭代与总页码相同的次数,每次创建一个在其 URL 的“page”属性中具有页码的链接,如果要添加当前页面链接,我们只需添加一个 class=”活动”表示页面处于活动状态。下图是我们的最终结果。

    我们以程序方式使用PHP创建了一个简单的分页系统,但现在的问题是我们总共有 150 个页面,尽管功能正确,但拥有所有这些页面确实看起来很奇怪,这就是为什么在下一篇文章中我们将考虑添加更多功能,并为我们的分页系统提供化妆品。