2011-06-21 84 views
0

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

我写了一个代码,它根据搜索表单中选择的选项创建一个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

使用隐藏表单域和存储先前从$ _POST []在其中,当你提交“通过点击分页链接的一个方式,这些值将保留接收的值。