-1

我正在尝试使用 php 和 mysql 创建一个搜索表单并进行分页

所以我有一个看起来像这样的表格:

<form action="search_results.php" method="post">
                        <select name="cat" id="cat">
                            <option>Select Category</option>
                            <?php
                            foreach($categories as $category) {
                            echo "<option value=\"{$category -> name}\">{$category -> name}</option>";
                            }
                            ?>
                        </select>
                        <select name="sub-cat" id="sub-cat">
                            <option>Select Sub Category</option>
                        </select>
                        <label>Price Range</label>
                        <input type="text" name="from" placeholder="From" />
                        <input type="text" name="to" placeholder="To" />
                        <input type="submit" value="" name="submit" />
                    </form>

我的问题是我得到了 search_result.php 的第一页

当我尝试转到第二页时,不会设置 $_POST['submit'] 因为它没有得到任何提交

任何人都知道如何解决这个问题

提前致谢。

4

2 回答 2

2

在这种情况下,出于您指定的原因,您可能应该将 GET 用于表单和后续的分页链接。

POST 最好用作一次性操作,其中 GET 是对可以过滤和黑客攻击的资源的请求。

search_results.php?cat=1&sub-cat=2&page=2

search_results.php?cat=1&sub-cat=2&page=3

search_results.php?cat=1&sub-cat=2&page=4

search_results.php?cat=1&sub-cat=2&page=5
于 2012-04-09T21:43:40.170 回答
0

最简单的方法是生成在查询字符串中包含搜索信息的“下一个”和“上一个”URL,然后让接收页面从 $_GET 而不是 $_POST 中读取它们。$_GET 数组的工作方式与 $_POST 数组完全相同,只是用于在 URL 中传递的变量。

另一种选择是创建一个表单,其中搜索信息存在于隐藏字段中,并使用 javascript 使“下一个”和“上一个”链接更改要获取的页面的值,然后提交表单。这将允许您使用与您现在使用的完全相同的基于 POST 的代码,尽管它会阻止用户为搜索页面添加书签并且可能会产生其他意想不到的效果。

于 2012-04-09T21:47:51.180 回答