我真的很难开始完成这项任务。
我在同一页面上有两个表格。
第一个表单提供了一个搜索框,供用户输入多个搜索过滤器之一,如地址,邮政编码,街道,地块,甚至州名。
如果搜索产生多个结果,则用户可以点击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”)
将其他页面中的值抓取到此页面中。
答案 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以及如何在以后使用它们来运行搜索,因为我没有看到使该部分成为问题的代码。