如何向现有代码添加分页?

Posted

技术标签:

【中文标题】如何向现有代码添加分页?【英文标题】:How can I add pagination to my existing code? 【发布时间】:2019-06-03 18:48:08 【问题描述】:

我想将分页添加到我使用 ajax 编程的现有表格中。

我尝试了多种分页解决方案,但没有一个看起来与我现在拥有的现有表格兼容

index.php 中的表格

<div class="table-responsive">
  <table class="table table-bordered table-striped">
    <thead>
    <th ></th>
    <th >Serial No.</th>
    <th >Equipment Type</th>
    <th >Document Remarks</th>
    <th >Supplier</th>
    <th >Date In</th>
    <th >Customer</th>
    <th >Date Out</th>
    </thead>
    <tbody></tbody>
 </table>
</div>

在 index.php 中显示表格的脚本

<script>
    $(document).ready(function () 

        function fetch_data()
        
            $.ajax(
                url: "select.php",
                method: "POST",
                dataType: "json",
                success: function (data)
                
                    var html = '';
                    for (var count = 0; count < data.length; count++)
                    
                        html += '<tr>';
                        html += '<td><input type="checkbox" value="' + 
data[count].id + '" id="' + data[count].id + '" data-serial_number="' + 
data[count].serial_number + '" data-equipment_type="' + 
data[count].equipment_type + '" data-document_remarks="' + 
data[count].document_remarks + '" data-supplier="' + data[count].supplier + 
'" data-date_scan="' + data[count].date_scan + '" data-customer="' + 
data[count].customer + '" data-date_out="' + data[count].date_out + '" 
class="check_box"  /></td>';
                        html += '<td>' + data[count].serial_number + '</td>';
                        html += '<td>' + data[count].equipment_type + '</td>';
                        html += '<td>' + data[count].document_remarks + '</td>';
                        html += '<td>' + data[count].supplier + '</td>';
                        html += '<td>' + data[count].date_scan + '</td>';
                        html += '<td>' + data[count].customer + '</td>';
                        html += '<td>' + data[count].date_out + '</td></tr>';
                    
                $('tbody').html(html);
            
        );
    

    fetch_data();
 
</script>

选择.php

include('database_connection.php');

$query = "SELECT * FROM inventory ORDER BY id DESC";

$statement = $connect->prepare($query);

if ($statement->execute()) 
    while ($row = $statement->fetch(PDO::FETCH_ASSOC)) 
        $data[] = $row;
    

    echo json_encode($data);

?>

【问题讨论】:

你说的“它们都不像我现有的表兼容”是什么意思? @GregSchmidt 对我来说,作为一名学生,我不太清楚如何将分页解决方案应用于我现有的表格。 【参考方案1】:

在您的 fetch_data() 函数中,您需要在 POST 请求中包含页面数据:

limit 应该是每页可查看的项目数 offset 应该是 limit 乘以页码(从 0 开始)

例如。下面将请求结果的第二页(每页 10 个结果)

$.ajax(
  url: "select.php",
  method: "POST",
  dataType: "json",
  data: limit: 10, offset: 10,
  // etc.

在您的 PHP 脚本中,您需要读取这些变量并将它们添加到您的查询中:

$limit = $_POST['limit'];
$offset= $_POST['offset'];

$query = "SELECT * FROM inventory ORDER BY id DESC LIMIT = ? OFFSET= ?";
$statement = $connect->prepare($query);

if ($statement->execute([$limit, $offset])) 
    while ($row = $statement->fetch(PDO::FETCH_ASSOC)) 
        $data[] = $row;
    

    echo json_encode($data);

【讨论】:

嗨!谢谢回复!我试过了,我的表中没有显示我的 sql 数据:(,我是否将选择查询中的问号保留原样? @QairulShazriz 是的,问号是prepared statements 的一部分。您要显示的库存表中的行数是否超过 10 行? 是的,数据库目前有超过 300 多个数据,并且会不断增加。那么我该怎么做呢?我非常感谢它帮助我 对您的数据库运行此查询是否返回结果:SELECT * FROM inventory ORDER BY id DESC LIMIT = 10 OFFSET= 10 遗憾的是没有一个结果。

以上是关于如何向现有代码添加分页?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Angular 4 中为表格添加分页?

向 Reportlab Canvas 对象添加分页符

如何在 php 图像网格视图中添加分页?

如何在 ngx-datatable 中添加分页和页脚模板?

在jsp中使用jtable为所有表添加分页

在 Flex Datagrid 中添加分页的插件?