我真的很难开始这项任务。
我在同一页上有两个表单。
第一个表单提供了一个搜索框,用户可以输入几个搜索过滤器中的一个,如地址、邮政编码、街道、地段,甚至州名称。
如果搜索产生多个结果,则用户可以单击Advanced Search链接。
此Advanced Search包含多个复选框,允许用户选中一个或多个框以缩小搜索结果范围。
这很好用。
现在的问题是给予用户“保存”他们的搜索结果的能力,可能使用cookie,以便用户下次加载这个页面时,他/他上次保存的搜索结果将成为他/她的默认搜索页面,直到他们更改它或直到他们删除删除这个最后操作的cookie。
这更像是记住用户上次搜索此页面时的最后一次操作。
到目前为止,我的想法是首先将SQL查询存储在php代码中的会话变量中。
然后,当用户单击我要创建的"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最后,我可以在我们的页面上提供一个"Repeat Last Action“按钮,它所做的就是
$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
我一直收到"invalid“错误
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")
若要将值从另一页抓取到此页中,请执行以下操作。
发布于 2013-05-17 21:44:13
您在这里所做的基本上是将SQL查询保存到cookie (用户可编辑的数据)。
setcookie('LastAction',$_SESSION["LastAction"] /*We're saving the value, not the session. */,time() + (86400 * 365)); // 86400 = 1 year无论如何,我建议将搜索标志作为serialized数组保存到cookie中,然后在需要重用该数据时使用该数据进行普通搜索,而不是浪费时间根据保存在cookie中的sessid恢复会话。
基本上,你可以这样做:
$saved_search = serialize($search_opts);
setcookie('SavedSearch',$_SESSION["LastAction"],time() + (86400 * 365));为了扭转这一过程,
$saved_search = $_COOKIE['SavedSearch'];
$search_opts = unserialize($saved_search);您需要从您自己的代码中找出在哪里拦截$search_opts,以及如何在以后使用它们来运行搜索,因为我看不到使该部分滴答作响的代码。
https://stackoverflow.com/questions/16568103
复制相似问题