如何解决页面刷新后保留$ _POST生成的变量
| 使用分页链接导航时,我无法保留查询结果。 我已经编写了一个代码,该代码根据在搜索表单中选择的选项创建一个mySQL查询。它是一种自行提交的表单,该表单使用$ _POST结果放置在一个变量中,该变量在以下代码中构建查询:<?PHP
if (isset($_POST)) {
$find = array();
$area = array();
if (isset($_POST [\'location\']) && !($_POST [\'location\'] == \"000\")) {
$find [] = $_POST [\'location\'];
$area [] = \"location\";
}
if (isset($_POST [\'sector\']) && !($_POST [\'sector\'] == \"000\")) {
$find [] = $_POST [\'sector\'];
$area [] = \"sector\";
}
if (isset($_POST [\'hours\']) && !($_POST [\'hours\'] == \"000\")) {
$find [] = $_POST [\'hours\'];
$area [] = \"hours\";
}
while ((list($key1,$val1) = each($find)) && (list($key2,$val2) = each($area))) {
if ($key1 == 0) {
$result = \" WHERE \" . strtolower($val2) . \"= \" . \"\'\" . strtolower($val1) . \"\'\" . \" \" ;
}
if ($key1 >= 1) {
$result .= \"AND \" . strtolower($val2) . \"= \" . \"\'\" . strtolower($val1) . \"\'\" . \" \" ;
}
}
} else {
$result = NULL ;
}
?>
问题是当我选择一个分页链接时,它会刷新页面,这会删除原始的SQL查询,这意味着我只获取表中的所有记录,而不是基于搜索的结果。
到目前为止,我已经尝试使用cookie保留搜索表单生成的变量,并在用户提交另一个搜索时取消设置cookie。这在某种程度上有效,但是由于某种原因,在选择了2次Cookie的分页链接后,该Cookie消失了。
这是我添加的用于设置cookie的代码,您将在if语句的底部找到所做的编辑:
<?PHP
if (isset($_POST)) {
$find = array();
$area = array();
if (isset($_POST [\'location\']) && !($_POST [\'location\'] == \"000\")) {
$find [] = $_POST [\'location\'];
$area [] = \"location\";
}
if (isset($_POST [\'sector\']) && !($_POST [\'sector\'] == \"000\")) {
$find [] = $_POST [\'sector\'];
$area [] = \"sector\";
}
if (isset($_POST [\'hours\']) && !($_POST [\'hours\'] == \"000\")) {
$find [] = $_POST [\'hours\'];
$area [] = \"hours\";
}
while ((list($key1,$val2) = each($area))) {
if ($key1 == 0) {
$result = \" WHERE \" . strtolower($val2) . \"= \" . \"\'\" . strtolower($val1) . \"\'\" . \" \" ;
}
if ($key1 >= 1) {
$result .= \"AND \" . strtolower($val2) . \"= \" . \"\'\" . strtolower($val1) . \"\'\" . \" \" ;
}
}
setcookie(\"testcookie\",\"$result\",time()-36000);
setcookie(\"testcookie\",$result);
} else {
$result = NULL ;
}
?>
这是相应代码的其余部分:
我将cookie分配给一个变量:
$ ret_result = str_replace(\'\\\',\'\',$ _COOKIE [\“ testcookie \”]);
然后执行查询:
$sql = \"SELECT * FROM posting $ret_result \";
我在第一次提交表单时也无法生成查询。在查询分配给变量之前,我必须提交两次表单。尝试删除Cookie时也是如此!
我在这里很茫然,所以将不胜感激任何指针。
谢谢
解决方法
使用隐藏的表单字段并将以前从$ _POST []接收的值存储在它们中,这样,当您通过单击分页链接之一来“提交”时,这些值将被保留。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。