【问题标题】:php dynamic pagination logical errorphp动态分页逻辑错误
【发布时间】:2016-09-24 05:38:55
【问题描述】:

我正在开发一个页面,用户可以在分页中输入表格的限制。当我这样做时,我输入的数据被获取并据此执行查询。但是当我单击该表的另一页时,该值将重置为我在此处设置为 5 的默认值。

<?php  session_start(); ?>
<a href="recordentry.php">Submit New record</a><br><br>
<form method="post">
    <input type="text" name="dlimit">
    <input type="submit" name="submit">
</form>
<?php 
$database = 'test';
require 'connection.php';
if(!isset($_POST['submit']))
{
    $limit = 5;
}
else 
{ 
    $dlimit = $_POST['dlimit'];
    $limit = $dlimit;
}
@$id = $_GET['id'];

 if($id==""||$id==null)
 {
    $page=0;
 }
 else
 {
 $page = ($id*$limit)-$limit;
}
    $qq ="select * from record limit $page,$limit";
    $result = $link -> query($qq);
?>
<table border="1"><th>ID</th>
        <th>Name</th>
        <th>qualification</th>
        <th>address</th>
        </tr>
        <?php
    while ($row = mysqli_fetch_object($result)) 
    {
?>
        <tr>
        <td><?php echo $row->id ?></td>
        <td><?php echo $row->user_name ?></td>
        <td><?php echo $row->qualification ?></td>
        <td><?php echo $row->address ?></td>
        </tr>
<?php 
}
?>
</table>
<?php
$query = "SELECT * FROM record";
    $result = $link -> query($query);
    $rows = mysqli_num_rows($result);
    $rr = $rows/$limit;
    $rr = ceil($rr);
    for ($i=1; $i<=$rr ; $i++) { 
?>
      <a href="recordfetch.php?id=<?php echo $i; ?>"><?php echo @$i;?>&nbsp;</a>  
<?php    
}
mysqli_close($link)
?>

运行上面的代码并检查。如果你不清楚我的话。

【问题讨论】:

  • 在没有丢失文件和数据库结构等问题的情况下,我们应该如何运行您的代码?

标签: php html mysql pagination


【解决方案1】:

我认为 $_POST 数据丢失了。您单击该链接,因此新页面将在没有 POST 信息的情况下打开。

如果您切换到 GET 而不是 POST,您可以更改此设置。您可以将 GET 参数添加到您的 &lt;a href=""&gt; 标签中。

例如 &lt;a href="pagination.php?page=5&amp;dlimit=100

还要尽量避免@error 抑制,不要将$_POST/$_GET Vars 直接传递给您的sql 字符串。坏人可以将其用于 SQL 注入

【讨论】:

  • 我试过了,但是当我用 get 替换 post 时,一个无限循环开始了。文件中有两个链接,一个是在数据库中输入数据的开头,然后是存储我的数据库连接数据的连接。并且 recordfetch.php 是文件本身。我使用的演示 SQL 结构是 user_namequalificationaddress 希望此信息有助于解决此问题
  • 我不明白你想要什么。自动取款机。我认为您只需要用户定义的 LIMIT。因此,我会将 GET 添加到链接中
  • 好的,我错过了一个。但是无论我在哪个页面上,同样的事情,当我进入限制系统并处理它之后,当我再次更改页面时,它开始显示默认值,即 5
  • 正确理解:您有一个表单,您可以在其中设置页面上的元素数量。如果您提交它,该页面将重新加载此页面上的 元素。您还希望有一个分页,您可以在与 变量相关的页数之间切换,对吗?
  • 是的,我在第 1 页输入的值不会移动到其他页面。 snag.gy/Vl5yaR.jpg snag.gy/qp6kx7.jpg 看两页的网址 dlimit 是存储文本字段值的变量。
【解决方案2】:

所以我得到了我的问题的答案。如果以后有人需要,我会在这里发布。

 <a href="recordentry.php">Submit New record</a><br><br>
<form method="get">
    <input type="text" name="dlimit">
    <input type="submit" name="submit">
</form>
<?php 
$database = 'test';
require 'connection.php';
if(empty($_GET['dlimit']) && !isset($_GET['submit']) && empty($_GET['n']))
{
    $limit = 5;
    global $limit;
}
else 
{ 
    if (isset($_GET['dlimit'])) 
    {
        $limit = $_GET['dlimit'];
    }
    else
    {
        @$limit = $_GET['n'];
    }
    global $limit;
}
if(!isset($_GET['submit'])&& empty($_GET['n']))
{
    $n=5;
    global $n;

}
else
{
    if(empty($_GET['dlimit']))
    {
        $n=$_GET['n'];
    }
    else
    {
        $n=$_GET['dlimit'];
    }
    global $n;

}

@$id = $_GET['id'];

 if($id==""||$id==null)
 {
    $page=0;
 }
 else
 {
 $page = ($id*$limit)-$limit;
}
    $qq ="select * from record limit $page,$limit";
    $result = $link -> query($qq);
?>
<table border="1"><th>ID</th>
        <th>Name</th>
        <th>qualification</th>
        <th>address</th>
        </tr>
        <?php
    while ($row = mysqli_fetch_object($result)) 
    {
?>
        <tr>
        <td><?php echo $row->id ?></td>
        <td><?php echo $row->user_name ?></td>
        <td><?php echo $row->qualification ?></td>
        <td><?php echo $row->address ?></td>
        </tr>
<?php 
}
?>
</table>
<?php
if (!isset($_GET['submit']) && empty($_GET['n'])) {
    $n = 5;
    global $n;
}
else
{
    if (empty($_GET['dlimit'])) {
        $n = $_GET['n'];
    }
    else
    {
        $n = $_GET['dlimit'];
    }
    global $n;
}
$query = "SELECT * FROM record";
    $result = $link -> query($query);
    $rows = mysqli_num_rows($result);
    $rr = $rows/$limit;
    $rr = ceil($rr);
    for ($i=1; $i<=$rr ; $i++) { 
?>
      <a href="recordfetch.php?id=<?php echo $i; ?>&& n=<?php echo @$n; ?>"><?php echo @$i;?>&nbsp;</a>  
<?php    
}
mysqli_close($link)
?>

我在这里再次提到,我在这里包含的文件只是我填写连接详细信息的连接,其他是用户输入数据的记录条目文件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-21
    • 1970-01-01
    • 1970-01-01
    • 2012-10-23
    • 2021-04-28
    • 2012-01-03
    相关资源
    最近更新 更多