php - 显示具体编号 每页的行数?
问题描述
我想显示具体的编号。每页记录数?下面的代码用于分页。我正在尝试每页显示 2 条记录。它成功在第一页显示两条记录。问题开始在下一页发生。目前我有 10 条记录。它会像这样显示
第 1 页 = 2 条记录。
+---+---------+------------------+-------+
|No.| File ID | File Desc. |Status |
+---+---------+------------------+-------+
|1 | 400/4 | 1 - Test 1 400/4 | |
+---+---------+------------------+-------+
|2 | 400/1 | 5 - Test 5 400/1 | |
+---+---------+------------------+-------+
第 2 页 = 4 条记录(2 条记录 + 第 3 页的 2 条记录)
+---+---------+------------------+-------+
|No.| File ID | File Desc. |Status |
+---+---------+------------------+-------+
|1 | 400/3 | 2 - Test 2 400/3 | |
+---+---------+------------------+-------+
|2 | 400/3 | 1 - Test 1 400/3 | |
+---+---------+------------------+-------+
|3 | 400/2 | 3 - Test 3 400/2 | |
+---+---------+------------------+-------+
|4 | 400/2 | 2 - Test 2 400/2 | |
+---+---------+------------------+-------+
第 3 页 = 6 条记录(2 条记录 + 第 4 页的 2 条记录 + 第 5 页的 2 条记录)
+---+---------+------------------+-------+
|No.| File ID | File Desc. |Status |
+---+---------+------------------+-------+
|1 | 400/2 | 3 - Test 3 400/2 | |
+---+---------+------------------+-------+
|2 | 400/2 | 2 - Test 2 400/2 | |
+---+---------+------------------+-------+
|3 | 400/2 | 1 - Test 1 400/2 | |
+---+---------+------------------+-------+
|4 | 400/1 | 3 - Test 3 400/1 | |
+---+---------+------------------+-------+
|5 | 400/1 | 2 - Test 2 400/1 | |
+---+---------+------------------+-------+
|6 | 400/1 | 1 - Test 1 400/1 | |
+---+---------+------------------+-------+
第 4 页 = 4 条记录(2 条记录 + 第 5 页的 2 条记录)。
+---+---------+------------------+-------+
|No.| File ID | File Desc. |Status |
+---+---------+------------------+-------+
|1 | 400/2 | 1 - Test 1 400/2 | |
+---+---------+------------------+-------+
|2 | 400/1 | 3 - Test 3 400/1 | |
+---+---------+------------------+-------+
|3 | 400/1 | 2 - Test 2 400/1 | |
+---+---------+------------------+-------+
|4 | 400/1 | 1 - Test 1 400/1 | |
+---+---------+------------------+-------+
第 5 页 = 2 条记录。
+---+---------+------------------+-------+
|No.| File ID | File Desc. |Status |
+---+---------+------------------+-------+
|1 | 400/1 | 2 - Test 2 400/1 | |
+---+---------+------------------+-------+
|2 | 400/1 | 1 - Test 1 400/1 | |
+---+---------+------------------+-------+
$num_rows = mysqli_num_rows($query);
$per_page = 2; // Per Page
$page = 1;
if(isset($_GET["Page"]))
{
$page = $_GET["Page"];
}
$prev_page = $page-1;
$next_page = $page+1;
$row_start = (($per_page*$page)-$per_page);
if($num_rows<=$per_page)
{
$num_pages =1;
}
else if(($num_rows % $per_page)==0)
{
$num_pages =($num_rows/$per_page) ;
}
else
{
$num_pages =($num_rows/$per_page)+1;
$num_pages = (int)$num_pages;
}
$row_end = $per_page * $page;
if($row_end > $num_rows)
{
$row_end = $num_rows;
}
下面是分页
Total <?php echo $num_rows;?> Record : <?php echo $num_pages;?> Page :
<?php
if($prev_page)
{
echo " <a href='$_SERVER[SCRIPT_NAME]?Page=$prev_page&txtKeyword=$strKeyword&txtKeyword2=$strKeyword2'><< Back</a> ";
}
for($i=1; $i<=$num_pages; $i++){
if($i != $page)
{
echo "[ <a href='$_SERVER[SCRIPT_NAME]?Page=$i&txtKeyword=$strKeyword&txtKeyword2=$strKeyword2'>$i</a> ]";
}
else
{
echo "<b> $i </b>";
}
}
if($page!=$num_pages)
{
echo " <a href ='$_SERVER[SCRIPT_NAME]?Page=$next_page&txtKeyword=$strKeyword&txtKeyword2=$strKeyword2'>Next>></a> ";
}
$dbConn = null;
?>
解决方案
问题是您没有在 sql 查询中更新您的开始或偏移量。如果偏移量是正确的,它只会获取您需要的某些记录集。带有偏移量的 sql 查询示例:下面的 SQL 查询说“仅返回 2 条记录,从记录 1 (OFFSET 0) 开始”:
$page=0;
$per_page = 2;
$offset=$page*$per_page; //0
$sql = "SELECT * FROM Orders LIMIT 2 OFFSET 0";
当您单击下一页时,应更新开始/偏移量
$page=1;
$per_page = 2;
$offset=$page*$per_page; //2
$sql = "SELECT * FROM Orders LIMIT 2 OFFSET 2";
单击第三页代码将更新为
$page=2;
$per_page = 2;
$offset=$page*$per_page; //4
$sql = "SELECT * FROM Orders LIMIT 2 OFFSET 4";
等等...
所以 sql 语句应该如下所示:
$sql = "SELECT * FROM Orders LIMIT $per_page OFFSET $offset";
或者
您还可以使用更短的语法来获得相同的结果:
$sql = "SELECT * FROM Orders LIMIT $offset, $per_page"
推荐阅读
- python - 使用 Python 或 Excel vba 将单个 excel 单元格内容拆分为不同的单元格
- python - 如何在python中将字典转换为矩阵?
- swift - SwiftUI:如何让 TextField 成为第一响应者?
- delphi - Delphi - 如何正确注册自 XE8 以来的图形类?
- python - 被熊猫读取后删除CSV文件中的行
- php - php文件大小重要吗?
- django - 来自 API 更新的验证数据给出和空字典
- java - 如何在圆周上接近 pi
- android - 有没有办法在 AOSP 中禁用 HWC 并在 GLES 中执行所有操作?
- flutter - 无法在第一行安装稳定版 Flare 错误