Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php中搜索后分页_Php_Sql_Ajax - Fatal编程技术网

php中搜索后分页

php中搜索后分页,php,sql,ajax,Php,Sql,Ajax,我有一个搜索按钮,用于在类别和产品表中搜索。 所以我使用了两个下拉列表,当页面在第一个下拉列表中加载时,显示类别,当用户在第二个下拉列表中选择类别时,显示该类别中的产品。此外,当页面加载时,将运行显示所有产品的默认查询。因此,搜索功能运行良好 问题是我也在使用分页。在搜索之前,分页工作正常(每页15条记录),但在搜索之后,如果我选择一个类别并进行搜索,它将显示该类别的所有记录,当我转到下一页时,它将运行默认查询并显示默认结果。我希望它显示我搜索的结果 将表单方法从post更改为get,其中有类别

我有一个搜索按钮,用于在类别和产品表中搜索。 所以我使用了两个下拉列表,当页面在第一个下拉列表中加载时,显示类别,当用户在第二个下拉列表中选择类别时,显示该类别中的产品。此外,当页面加载时,将运行显示所有产品的默认查询。因此,搜索功能运行良好

问题是我也在使用分页。在搜索之前,分页工作正常(每页15条记录),但在搜索之后,如果我选择一个类别并进行搜索,它将显示该类别的所有记录,当我转到下一页时,它将运行默认查询并显示默认结果。我希望它显示我搜索的结果


将表单方法从post更改为get,其中有类别选择和搜索按钮

<form method="get"></form>
        <?php
        $listperpage = 15;
        $_SESSION['category'] = $_POST['category'];
        $_SESSION['product'] = $_POST['product'];
        /** clear_search is the name of your clear search button */
        if(isset($_POST["clear_search"])){
            unset($_SESSION['category']);
            unset($_SESSION['product']);
        }
        if(!empty($_SESSION['category'])){
            $query = "SELECT * FROM tbl_category INNER JOIN tbl_product ON tbl_category.id = tbl_product.fk_id_category WHERE fk_id_category = ". $_SESSION['category'];
            $result = mysql_query($query) or die (mysql_query());
        }
        else if(!empty($_SESSION['category']) && !empty($_SESSION['product'])){
            $query = "SELECT * FROM tbl_category INNER JOIN tbl_product ON tbl_category.id = tbl_product.fk_id_category WHERE fk_id_category = " .$_SESSION['category']. " AND rank_name = ". $_SESSION['product'];
            $result = mysql_query($query) or die (mysql_query());
        }else{
            $query = "SELECT * FROM tbl_category INNER JOIN tbl_product ON tbl_category.id = tbl_product.fk_id_category";
            $result = mysql_query($query) or die (mysql_query());
            echo "else one";
        }

        $result_num = mysql_num_rows($result);
        //total pages
        $pages = ceil($result_num/$listperpage);
        //which number the user is crrrently on 
        if (!isset($_GET['page'])) {
            $page = 1;
        } else{
            $page = $_GET['page'];
        }
        //sql limit starting number of results on th page
        $strt_limit_no = ($page - 1)*$listperpage;

        if(isset($_POST["search"])){
            if(empty($_SESSION['category'])){
                echo "<span class='form-error'>Select Category first!</span>";
            }
            else if(!empty($_SESSION['category']) && !empty($_SESSION['product'])){
                $queryn = "SELECT * FROM tbl_category INNER JOIN tbl_product ON tbl_category.id = tbl_product.fk_id_category WHERE fk_id_category = " .$_SESSION['category']. " AND rank_name = " . $_SESSION['product'] . " LIMIT ". $strt_limit_no .','. $listperpage;
                $results =  mysql_query($queryn) or die (mysql_query());
            }
            else{
                $queryn = "SELECT * FROM tbl_category INNER JOIN tbl_product ON tbl_category.id = tbl_product.fk_id_category WHERE fk_id_category = " .$_SESSION['category']. " LIMIT ". $strt_limit_no .','. $listperpage;
                $results =  mysql_query($queryn) or die (mysql_query());
            }
        }
        else{
            $queryn = "SELECT * FROM tbl_category INNER JOIN tbl_product ON tbl_category.id = tbl_product.fk_id_category LIMIT ". $strt_limit_no .','. $listperpage;
            $results = mysql_query($queryn) or die (mysql_query());
            echo "else end";
        }
    ?>
将这些值添加到分页

<div class="pagination">
        <?php
        $cat = $prod = '';
        if(!empty($_GET['category'])){ $cat = '&category='.$_GET['category']; }
        if(!empty($_GET['product'])){ $prod = '&product='.$_GET['category']; }
        for ($page=1; $page <= $pages ; $page++) { 
            echo '<a style="color: #000000;
                    float: left;
                    padding: 8px 16px;
                    text-decoration: none;
                    "href="list.php?page='. $page. $cat. $prod .'">'. $page .'</a> ';
        }
        ?>
    </div>

注意:如果搜索时未发送“page”参数,则在搜索表单中设置一个名为page的输入

<input type="hidden" name="page" value="<?php echo $page; ?>"

能否再添加一个按钮以清除搜索?如果可能的话,您可以将发布的数据$u POST['category']和$u POST['product']保存到会话中,并检查会话是否可用,而不必应用where子句。并单击“清除搜索”按钮清除存储的会话。第二种方法是,您可以通过GET而不是POST发送数据,如果数据可用,则将其附加到页面后面的分页链接。@AlokMali我想使用第二种方法,您能否给我一个代码示例,说明如何执行此操作。您的前两个ifs有问题
if(!empty($c)){}else if(!empty($c)&&&!empty($n){/code>。如果我没有弄错,else if
将永远不会执行,因为如果
$c
不是空的,它将进入第一个
如果
并且如果
$c
是空的,那么它将不会执行
如果
或者
elseif
。(我不认为这导致了您的问题,但我注意到了这一点)并且
mysql\u query
已被弃用,不应使用。我强烈建议;但就目前情况而言,您的脚本对sql注入是开放的,因为变量直接打印到您的station中,而无需
mysqli\u real\u escape\u字符串
或(更好)PDO或mysqliI的参数化查询已经盯着你的代码看了一段时间了,我想不出来。我不完全确定这里发生了什么。这可能有助于将你的代码分成两个脚本。一个脚本用于默认查询,另一个脚本用于类别。我也没有看到类别选择器的html,也没有看到html whi您的ajax请求取决于(具有
id=category
id=product
的元素。因此@AlokMali这不起作用。搜索现在不起作用,分页正在工作,但在进入第2页后,它会显示默认结果,并在else中显示查询结果。您能告诉我们如何使用会话吗?@bro1o1,尽管第一个解决方案也应该起作用,但是我已经发布了另一个解决方案。@bro1o1,你得到你想要的解决方案了吗?它现在起作用了吗?
<input type="hidden" name="page" value="<?php echo $page; ?>"
        <?php
        $listperpage = 15;
        $_SESSION['category'] = $_POST['category'];
        $_SESSION['product'] = $_POST['product'];
        /** clear_search is the name of your clear search button */
        if(isset($_POST["clear_search"])){
            unset($_SESSION['category']);
            unset($_SESSION['product']);
        }
        if(!empty($_SESSION['category'])){
            $query = "SELECT * FROM tbl_category INNER JOIN tbl_product ON tbl_category.id = tbl_product.fk_id_category WHERE fk_id_category = ". $_SESSION['category'];
            $result = mysql_query($query) or die (mysql_query());
        }
        else if(!empty($_SESSION['category']) && !empty($_SESSION['product'])){
            $query = "SELECT * FROM tbl_category INNER JOIN tbl_product ON tbl_category.id = tbl_product.fk_id_category WHERE fk_id_category = " .$_SESSION['category']. " AND rank_name = ". $_SESSION['product'];
            $result = mysql_query($query) or die (mysql_query());
        }else{
            $query = "SELECT * FROM tbl_category INNER JOIN tbl_product ON tbl_category.id = tbl_product.fk_id_category";
            $result = mysql_query($query) or die (mysql_query());
            echo "else one";
        }

        $result_num = mysql_num_rows($result);
        //total pages
        $pages = ceil($result_num/$listperpage);
        //which number the user is crrrently on 
        if (!isset($_GET['page'])) {
            $page = 1;
        } else{
            $page = $_GET['page'];
        }
        //sql limit starting number of results on th page
        $strt_limit_no = ($page - 1)*$listperpage;

        if(isset($_POST["search"])){
            if(empty($_SESSION['category'])){
                echo "<span class='form-error'>Select Category first!</span>";
            }
            else if(!empty($_SESSION['category']) && !empty($_SESSION['product'])){
                $queryn = "SELECT * FROM tbl_category INNER JOIN tbl_product ON tbl_category.id = tbl_product.fk_id_category WHERE fk_id_category = " .$_SESSION['category']. " AND rank_name = " . $_SESSION['product'] . " LIMIT ". $strt_limit_no .','. $listperpage;
                $results =  mysql_query($queryn) or die (mysql_query());
            }
            else{
                $queryn = "SELECT * FROM tbl_category INNER JOIN tbl_product ON tbl_category.id = tbl_product.fk_id_category WHERE fk_id_category = " .$_SESSION['category']. " LIMIT ". $strt_limit_no .','. $listperpage;
                $results =  mysql_query($queryn) or die (mysql_query());
            }
        }
        else{
            $queryn = "SELECT * FROM tbl_category INNER JOIN tbl_product ON tbl_category.id = tbl_product.fk_id_category LIMIT ". $strt_limit_no .','. $listperpage;
            $results = mysql_query($queryn) or die (mysql_query());
            echo "else end";
        }
    ?>