Php 在搜索栏中,当我搜索键的时候,它仍然会使整个页面并没有页面,无论表中是否有匹配项

Php 在搜索栏中,当我搜索键的时候,它仍然会使整个页面并没有页面,无论表中是否有匹配项,php,html,mysql,Php,Html,Mysql,当我在搜索栏中搜索时,它不会根据搜索键元素生成完全没有页面,这里是代码 <?php $total_num_page=2; if (isset($_GET['page'])) { $page_id = $_GET['page']; } els

当我在搜索栏中搜索时,它不会根据搜索键元素生成完全没有页面,这里是代码

<?php               
                 $total_num_page=2;
               if (isset($_GET['page']))
                    {
                        $page_id = $_GET['page'];
                    } 
               else
                    {
                        $page_id = 1;
                    }
                    $search = '' ;
                    if( isset($_POST['search']) )
                    {
                        $search = urldecode($_POST['search']);
                    }
                    else if( isset($_GET['search']) ) 
                    {
                        $search = urldecode($_GET['search']);
                    }
              if ( $search )
              {
                        $all_post_query = "select * from files where recieved_by like '%" . $search . "%' or processed_by like  '%" . $search . "%' or   purpose like  '%" . $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;
                    }

               ?>

这是分页代码

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

    </ul>

    发布时使用POST中的搜索字符串,单击页面链接时使用GET。如果不是,则使用空字符串

        if (isset($_GET['page'])) {
            $page_id = $_GET['page'];
        } else {
            $page_id = 1;
        }
        $search = '' ;
        if( isset($_POST['search']) ) {
            $search = urldecode($_POST['search']);
        }
        else if( isset($_GET['search']) ) {
            $search = urldecode($_GET['search']);
        }
    
    这里我们在查询中使用该关键字

    建议:将查询更改为使用COUNT(*)来查找总记录,而不是使用num_行

        if ( $search ) {
    
            $all_post_query = "select * from files where recieved_by like '%" . $search . "%' or processed_by like  '%" . $search . "%' or   purpose like  '%" . $search . "%' or file_name like  '%" . $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
    if ( $search ) {
        $p_query = "select * from files where recieved_by like '%$search%' or processed_by like  '%$search%' or   purpose like  '%$search%' or file_name like '%$search%' order by date desc limit $page_start_from, $total_num_page";
    } else {
    
        $p_query = "select * from files order by date desc limit $page_start_from, $total_num_page";
    }
    

    我建议您保留url中的页码作为参数,而不是会话。请检查会话是否未设置。使用isset(session['key'])函数。@VimukthiGuruge,请告诉我在单击任何其他链接时在何处放置unset,以便它应该离开搜索会话或何时刷新it@tan先生,告诉我如何使用它,在哪里?@tan,现在代码运行正确,在表中搜索代码时有一个简单的错误,我删除了它,工作正常,非常感谢,先生,一切正常,但它仍然显示总页数,如果没有匹配,我看不到任何显示总“页数”的内容(我可以看到锚1、2、3…等的代码),我不明白“没有匹配”是什么意思。在搜索栏中,当我搜索键时,它仍然会使整个页面没有页面,表中是否有匹配项。例如:如果表中有100条记录,每页10条,则会看到10个分页链接,即使您的搜索关键字也只匹配20条记录。在这种情况下,您只能看到2个分页链接。这就是你的意思吗?对不起,我不小心错过了你查询中的一个$_会话['search']。请将其替换为$search。编辑了我的答案。
    
    <?php
    if ( $search ) {
        $p_query = "select * from files where recieved_by like '%$search%' or processed_by like  '%$search%' or   purpose like  '%$search%' or file_name like '%$search%' order by date desc limit $page_start_from, $total_num_page";
    } else {
    
        $p_query = "select * from files order by date desc limit $page_start_from, $total_num_page";
    }
    
    <ul class="pagination">
                <?php
                $search_str = '';
                if ($search) {
                    $search_str = "&search=" . urlencode($search);
                }
                for ($i = 1; $i <= $total_page; $i++)
                    echo "<li class='" . ($page_id == $i ? 'active' : '') . "'><a href='index.php?page=" . $i . $search_str . "'>$i</a></li>";
                ?>
    
    </ul>