我正在尝试使用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']将不会被设置,因为它没有得到任何提交
任何人都知道如何解决这个问题
提前致谢。
答案 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的代码,但它可以防止用户为搜索页面添加书签并可能具有其他意外影响。