【问题标题】:Adding Pagination (Keep post data) with jQuery使用 jQuery 添加分页(保留帖子数据)
【发布时间】:2017-10-02 21:21:58
【问题描述】:

我正在寻找一种使用我的搜索表单设置分页的好方法,我希望它根据用户选择的每页条目数量来显示数据。他们在搜索结果下输入的这个值是通过 $_POST['searchamount'] 获取的。然后我尝试按照一些教程设置一个简单的分页,但我一直遇到问题,因为以下页面无法显示任何数据,我相信这是因为我的搜索脚本需要 $_POST['search'] 值是真实的意思 somebudy 提交表单,当点击数字滚动结果页面时,它只会重定向到 search.php?page=1 例如。如何添加其他方式以便它可以继续搜索,同时确保其安全?

我在网上阅读了一些很酷的方法来使用 jQuery,我希望它可以自动显示以下结果而无需离开页面。

这是我尝试过的示例

<?php while($row = mysqli_fetch_array($result)): ?>
    <tr>
        <td><?php echo $row['FactionName'];?></td>
        <td><?php echo $row['MoneyBalanceFormatted'];?></td>
        <td><?php echo $row['SpawnerWorthFormatted'];?></td>
        <td><?php echo $row['BlockWorthFormatted'];?></td>
        <td><?php echo $row['ItemWorthFormatted'];?></td>
        <td><?php echo $row['TotalWorthFormatted'];?></td>
        <td><?php echo $row['RichestMember'];?></td>
    </tr>
<?php endwhile;?>
<?php
    $page_query = "SELECT * FROM  ORDER BY TotalWorth DESC";
    $page_result = mysqli_query($con, $page_query);
    $total_records = mysqli_num_rows($page_result);
    $total_pages = ceil($total_records/$record_per_page);
    $start_loop = $page;
    $difference = $total_pages - $page;
    if($difference <= 5)
    {
     $start_loop = $total_pages - 5;
    }
    $end_loop = $start_loop + 4;
    if($page > 1)
    {
     echo "<a href='search.php?page=1'>First</a>";
     echo "<a href='search.php?page=".($page - 1)."'><<</a>";
    }
    for($i=$start_loop; $i<=$end_loop; $i++)
    {     
     echo "<a href='search.php?page=".$i."'>".$i."</a>";
    }
    if($page <= $end_loop)
    {
     echo "<a href='search.php?page=".($page + 1)."'>>></a>";
     echo "<a href='search.php?page=".$total_pages."'>Last</a>";
    }


    ?>

虽然我的示例根本无法正常工作,但它甚至会显示错误,mysqli_num_rows 返回布尔错误。

【问题讨论】:

  • "它甚至显示错误,mysqli_num_rows 返回一个布尔错误" 那是因为您没有在查询中输入表名
  • 在这里查看我的答案stackoverflow.com/questions/46055722/… 并相应地调整您的需要
  • 好尴尬...我写了但不小心删除了它。谢谢@PatrickQ

标签: javascript php jquery html pagination


【解决方案1】:

您可能对datatables 一个用于表格的 jquery 插件感兴趣。基本上,您必须删除 sn-p 中的分页逻辑,以便只保留表格渲染位。然后,感谢datatables,使用 javascript 在表格上启用分页和每页选择条目。查看他们的网站以获取指南和示例。

我的代码中经常有这种结构。 首先是一个循环,用 SQL 查询中的数据填充表头、页脚和正文。

    <?php if( isset($report['rows']) && count($report['rows']) > 0 ): ?>
        <div id="report-table-container">
            <table id="report-table" class="uk-table uk-table-hover uk-table-striped" cellspacing="0" width="100%">
                <thead>
                    <tr>
                    <?php foreach( $report['cols'] as $k => $v ): ?>
                        <th> <?= $v ?> </th> 
                    <?php endforeach ?>
                    </tr>
                </thead>
                <tfoot>
                    <tr>
                    <?php foreach( $report['cols'] as $k => $v ): ?>
                        <th> <?= $v ?> </th> 
                    <?php endforeach ?>
                    </tr>
                </tfoot> 
                <tbody>
                    <?php foreach($report['rows'] as $index => $entry): ?>
                    <tr>
                        <?php foreach( $report['cols'] as $k => $v ): ?>
                        <td> <?= $entry[$k] ?> </td> 
                        <?php endforeach ?>
                    </tr> 
                    <?php endforeach ?>
                </tbody>        
            </table>
        </div>  
        <?php endif ?>

请注意,该表具有属性id='report-table'。在您的 javascript 中使用它来启用该表的分页。像这样

<script>
$(document).ready(function() {
    $('#report-table').DataTable({
        dom: 'tipl'
    })
</script>

参数 dom 指定要添加到表中的元素。 l 例如指定一个下拉菜单,用于选择每页的项目数。 确保您已导入 jQuery 和 DataTable js 和 css 文件。

【讨论】:

  • 虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接的答案可能会失效。
  • 谢谢,这看起来是一种非常有效的方法来做我正在寻找的事情。你在我要找的东西上找到了它。不过请告诉我,这个例子是我在分页中寻找的吗? datatables.net/examples/basic_init/alt_pagination.html 另外,我将如何在当前的搜索脚本中实现这一点?我是否应该重新开始并删除我的脚本并按照本教程进行操作,然后重新创建查询以循环显示表数据?
  • 我已编辑答案以包含代码 sn-ps。希望他们对程序有更多的了解
猜你喜欢
  • 1970-01-01
  • 2011-11-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-08
  • 1970-01-01
  • 2012-11-17
相关资源
最近更新 更多