页面刷新后保留$ _POST生成的变量

时间:2011-06-21 20:00:21

标签: sql search cookies page-refresh

在使用分页链接导航时,我无法保留查询结果。

我编写了一个代码,它根据在搜索表单中选择的选项创建一个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而附加的代码,你会在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, $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) .  "'" . " " ;     
        }

    }

    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时也是如此!

我在这里不知所措,所以任何指针都会非常感激。

由于

1 个答案:

答案 0 :(得分:1)

使用隐藏的表单字段并将之前从$ _POST []收到的值存储在其中,这样当您通过单击其中一个分页链接“提交”时,这些值将被保留。