如何成功实现“记住此操作”例程?

时间:2013-05-15 14:42:08

标签: php ajax jquery

我真的很难开始完成这项任务。

我在同一页面上有两个表格。

第一个表单提供了一个搜索框,供用户输入多个搜索过滤器之一,如地址,邮政编码,街道,地块,甚至州名。

如果搜索产生多个结果,则用户可以点击Advanced Search链接。

Advanced Search包含多个复选框,允许用户选中一个或多个框以缩小搜索结果范围。

这很有效。

现在的问题是让用户能够使用cookie“保存”他们的搜索结果,以便下次用户加载此页面时,搜索结果 他/她上次保存将成为他/她的默认搜索页面,直到他们更改它或直到他们删除了消除最后一个动作的cookie。

这更像是在上次搜索此页面时记住用户的上一次操作。

到目前为止,我的想法首先是将SQL查询存储在php代码中的Session变量中。

然后,当用户点击我要创建的"Remember This Action"按钮时,我可以让我的php代码在cookie中保存该会话变量值。

换句话说,我会做这样的事情:

$tsql = "SELECT  Name, FeatType,
         MinX, MinY, MaxX, MaxY
         FROM mytable
ORDER BY ListOrder, Name DESC";

Session("LastAction") = $tsql

然后将"Remember This Action"按钮发布到我的php页面,其中只是:

Cookies("LastAction") = Session("LastAction")
Cookies("LastAction").Expires = Date() + 365 ' expires in one year

最后,我可以在我们的页面上提供“重复上一个操作”按钮,它所做的只是

$tsql = Request.Cookies("LastAction")
$stmt = sqlsrv_query( $conn, $tsql);

我遇到的很多问题之一就是我甚至无法超越这个问题:

$tsql = "SELECT  Name, FeatType,
         MinX, MinY, MaxX, MaxY
         FROM mytable
ORDER BY ListOrder, Name DESC";

Session(“LastAction”)= $ tsql

我在

上一直收到“无效”错误
  Session("LastAction") = $tsql

显然,我在PHP上非常非常弱,但努力加快速度。

非常感谢您的协助

我在这里做了一些小步骤。

我能够在语法上得到正确的答案:

$_SESSION["LastAction"] = $tsql;

我也可以设置正确的

setcookie('LastAction',$_SESSION["LastAction"],time() + (86400 * 365)); // 86400 = 1 year

现在,php中这一行的等价性是什么?

 $tsql = Request.Cookies("LastAction")

上面是我最好的刺,但我不认为这是正确的。

我基本上试图将"Remember Last Action"按钮放在另一页上。

然后使用:

$ tsql = Request.Cookies(“LastAction”)

将其他页面中的值抓取到此页面中。

1 个答案:

答案 0 :(得分:0)

您在这里所做的基本上是将SQL查询保存到cookie(用户可编辑的数据)。

setcookie('LastAction',$_SESSION["LastAction"] /*We're saving the value, not the session. */,time() + (86400 * 365)); // 86400 = 1 year

无论如何,我不建议根据保存在cookie中的sessid来恢复会话,而是建议将搜索标记保存为cookie作为serialized数组,然后再运行 - 当您需要重复使用时,使用该数据进行现场搜索。

基本上,你可以这样做:

$saved_search = serialize($search_opts);
setcookie('SavedSearch',$_SESSION["LastAction"],time() + (86400 * 365));

要扭转这个过程,

$saved_search = $_COOKIE['SavedSearch'];
$search_opts = unserialize($saved_search);

你需要从自己的代码中找出在哪里抓住$ search_opts以及如何在以后使用它们来运行搜索,因为我没有看到使该部分成为问题的代码。