如何使用分页在php和mysql中创建搜索表单?

时间:2012-04-09 21:34:07

标签: php mysql search post

我正在尝试使用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']将不会被设置,因为它没有得到任何提交

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

提前致谢。

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

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

另一种选择是创建一个表单,其中搜索信息存在于隐藏字段中,并使用javascript导致“下一个”和“上一个”链接更改要获取的页面的值,然后提交表单。这将允许您使用与您现在使用的完全相同的基于POST的代码,但它可以防止用户为搜索页面添加书签并可能具有其他意外影响。