我有一个仪表板php页面,其中包含来自mysql数据库的动态记录表,分页为每页1000个。我添加了一个带有一些选项的选择下拉菜单,供用户更新显示的行数。选择具有JavaScript代码以自动提交表单onchange。
表单页面:
message:{},
recipient: {},
sender: {},
account_linking: {status: 'linked'}
timestamp: 1231234123
该页面应以该表的每页默认行数1000加载,然后在将select更改为100时更新,仅加载100条记录。它当前根本不显示任何记录,但是当我删除选择时,它将加载默认值。我的猜测是,我的代码处理量不正确吗?
答案 0 :(得分:2)
尝试像这样默认分配:
$perpage = isset($_GET['amount']) ? $_GET['amount'] : 1000;
当前,您首先基于GET
值进行设置,然后在下一行覆盖它。这样可以检查它是否在URL中,如果不是,则使用默认值。
然后将该金额添加到您的分页链接中。例如,更改:
<li class="page-item"><a class="page-link" href="?
page=<?php echo $nextPage ?>"><?php echo $nextPage ?></a></li>
到
<li class="page-item"><a class="page-link" href="?
page=<?= $nextPage ?>&amount=<?= $perpage ?>"><?= $nextPage ?></a></li>
此外,您的表单为POST
,但是select没有名称,因此不会发布任何值。另外,您检查$_GET
。因此,我们需要先调整选择:
<select id="amount" name="amount" class="form-control"
onchange="this.form.submit()">
但是,这现在意味着您需要检查POST以获取分页链接的select和GET信息。因此,我们现在需要检查:
// first check URL
if (isset($_GET['amount'])) {
$perpage = $_GET['amount'];
}
// Now check form
if (isset($_POST['amount'])) {
$perpage = $_POST['amount'];
}
// if nothing set, default:
if(!isset($perpage)) {
$perpage = 1000;
}
答案 1 :(得分:0)
问题是由Bootstrap随附的数据表插件引起的。我要做的就是将dataTable类添加到表中,一切正常。