php动态分页逻辑错误

php动态分页逻辑错误

问题描述:

我正在开发一个页面,用户可以在分页中输入表格的限制。在我这样做的时候,我输入的数据被采集并且根据那个进行查询。但是当我点击该表的另一个页面时,该值被重置为默认值,我在此将其设置为5。php动态分页逻辑错误

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

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

+1

我们应该如何运行你的代码而不缺少文件和数据库结构等等。 –

我认为$ _POST数据丢失。你点击链接,这样新的页面就会打开,不需要POST信息。

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

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

而且尽量避免@错误抑制和不通过$ _ POST/$ _ GET直接瓦尔到您的SQL字符串。坏人可以使用它进行SQL注入

+0

我尝试过,但随着我**取代**后** **取得**无限循环开始。 文件中有两个链接,一个是数据在数据库中输入的位置,另一个是存储数据库连接数据的连接。 recordfetch.php是文件本身。 我使用的演示SQL结构是** user_name **,**资质**和**地址** 希望此信息有助于解决此问题 – Shashank

+0

我不明白你想要什么。自动取款机。我认为你只是想要一个用户定义的LIMIT。因此,我会将GET添加到链接 – mirko911

+0

好吧我缺少一个得到。但是同样的事情,无论我在哪个页面上,当我进入限制系统时都会接受并处理,之后当我再次更改页面时,它会开始显示默认值,即:5 – Shashank

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

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

我再次在这里提的是,这是我在这里包含的文件只是连接,我充满了我的连接细节等就是数据由用户输入我的记录项文件。