繁体   English   中英

使用php和mysql搜索过滤器分页问题

[英]Search filter pagination issue using php and mysql

在这里,当我使用分页在搜索过滤器中搜索基于数据库的基于行的短行时,它显示正确,但是当我单击第二页时,它离开了搜索过滤器并捕获了第二个查询,并且仅用于分页,

这是我的分页代码

 <ul class="pagination">
                  <?php
                    for($i=1;$i<=$total_page;$i++)
                      echo"<li class='".($page_id == $i? 'active' : '')."'><a href='index.php?page=".$i."'>$i</a></li>";
                  ?>

              </ul>

这是代码,当单击第二页时,它的离开搜索会话并在常规分页中再次转到

<?php
                 $total_num_page=1;
                if(isset($_GET['page']))
                {
                $page_id=$_GET['page'];
                }
                else
                {
                   $page_id=1;
                }
              if(isset($_POST['submitSearch']) || $_SESSION['search'])
                {

                    if($_POST['submitSearch']){
                        $_SESSION['search']=$_POST['search'];  
                    }

                    $all_post_query= "select * from files where recieved_by like '%". $_SESSION["search"]. "%' or processed_by like  '%".$_SESSION["search"]."%' or   purpose like  '%".$_SESSION["search"]."%' or file_name like  '%".$_SESSION["search"]."%' order by date desc";
                    $all_post_run=mysqli_query($con,$all_post_query);
                    $all_post=mysqli_num_rows( $all_post_run);
                    $total_page=ceil($all_post/$total_num_page);
                    $page_start_from=($page_id-1)*$total_num_page;
                 }
                 else
                 {
                   $all_post_query="select * from files order by date desc";
                   $all_post_run=mysqli_query($con,$all_post_query);
                   $all_post=mysqli_num_rows($all_post_run);
                   $total_page=ceil($all_post/$total_num_page);
                   $page_start_from=($page_id-1)*$total_num_page;
                  }?>

这是从数据库获取数据到表的代码

   <?php
                    $p_query="select * from files order by date desc limit $page_start_from, $total_num_page";
                          $p_run=mysqli_query($con,$p_query);
                            if(mysqli_num_rows($p_run)){
                             while($row=mysqli_fetch_array($p_run))
                             {
                                $c_id=$row['id'];
                                $file=$row['file_name'];
                                $purpose=$row['purpose'];
                                $recieve=$row['recieved_by'];
                                $processed=$row['processed_by'];
                                $address=$row['address'];
                                $contact=$row['contact_no'];
                                $date=$row['date'];


                            ?>
                                            <tr>

                                                <td><a  href="post.php?post_id=<?php echo $c_id?>"><?php echo $c_id;?></a></td>
                                                <td><a href="post.php?post_id=<?php echo $c_id?>"><?php echo $file;?></a></td>
                                                <td><a href="post.php?post_id=<?php echo $c_id?>"><?php echo $purpose;?></a></td>
                                                <td><a href="post.php?post_id=<?php echo $c_id?>"><?php echo $recieve;?></a></td>
                                                <td><a href="post.php?post_id=<?php echo $c_id?>"><?php echo $processed;?></a></td>
                                                <td><a href="post.php?post_id=<?php echo $c_id?>"><?php echo $address;?></a></td>
                                                <td><a href="post.php?post_id=<?php echo $c_id?>"><?php echo $contact;?></a></td>
                                                <td><a href="post.php?post_id=<?php echo $c_id?>"><?php echo $date;?></a></td>
?>

因此,请帮助我,我知道代码容易受到SQL注入的攻击,因此我将在完成后防止这种情况的发生。

您的代码有几个问题:

首先,当您选择显示表的数据时,无需考虑搜索参数,因此您将永远不会显示按搜索过滤的记录。

另外,您无需执行“ SELECT * FROM ..”即可获取所有记录的计数,而执行“ SELECT COUNT(id)as count FROM ..”则效率更高。

如果要将搜索参数存储在$ _SESSION中,请确保在PHP脚本之上具有session_start()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM