PHP动态分页逻辑错误


php dynamic pagination logical error

我正在开发一个页面,其中用户可以在分页中输入表的限制。当我这样做时,我输入的数据被获取,并根据该数据执行查询。但是当我点击该表的另一页时,值被重置为默认值,我在这里设置为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)
?>

运行以上代码并检查。

我认为$_POST数据丢失了。你点击链接,那么新页面将打开,没有POST信息。

你可以改变这一点,如果你切换到GET而不是POST。您可以将GET参数添加到您的<a href="">标签。

例如

<a href="pagination.php?page=5&dlimit=100

也尽量避免@错误抑制,不要直接传递$_POST/$_GET变量到你的sql字符串。坏人可以用它来进行SQL注入

所以我得到了我问题的答案。如果以后有人需要,我把它贴在这里。

 <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)
?>

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